ohthatsa_old/lib/util/DayCalculator.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;
}
}