60 lines
No EOL
1.2 KiB
Dart
60 lines
No EOL
1.2 KiB
Dart
// Based on this article:
|
|
// https://artofmemory.com/blog/how-to-calculate-the-day-of-the-week-4203.html
|
|
|
|
import 'Months.dart';
|
|
|
|
class DayCalculator {
|
|
// Calculates (YY + floor(YY / 4)) % 7
|
|
static int getYearValue(int year){
|
|
var yy = year % 100;
|
|
return (yy + (yy / 4).floor()) % 7;
|
|
}
|
|
|
|
static int getMonthValue(int month){
|
|
// Returns the month value for input 0-11
|
|
return Months.getFromInt(month).value;
|
|
}
|
|
|
|
static int getMonthValueByString(String month){
|
|
return Months.getFromString(month).value;
|
|
}
|
|
|
|
static int getCenturyValue(int year){
|
|
// Returns the century code for the year
|
|
// TODO: Implement Julian calendar?
|
|
year = (year / 100).floor() * 100;
|
|
switch(year){
|
|
case 1700:{
|
|
return 4;
|
|
}
|
|
case 1800:{
|
|
return 2;
|
|
}
|
|
case 1900:{
|
|
return 0;
|
|
}
|
|
case 2000:{
|
|
return 6;
|
|
}
|
|
case 2100:{
|
|
return 4;
|
|
}
|
|
case 2200:{
|
|
return 2;
|
|
}
|
|
default:{ //2300
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
static bool isLeapYear(int year){
|
|
if (year % 4 != 0) {
|
|
return false;
|
|
}
|
|
if (year % 100 == 0 && year % 400 != 0){
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
} |