ohthatsa_old/lib/DayCalculator.dart
2020-09-27 14:24:18 +02:00

81 lines
No EOL
1.4 KiB
Dart

// Based on this article:
// https://artofmemory.com/blog/how-to-calculate-the-day-of-the-week-4203.html
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
switch(month){
case 0:{
return 0;
}
case 1:{
return 3;
}
case 2:{
return 3;
}
case 3:{
return 6;
}
case 4:{
return 1;
}
case 5:{
return 4;
}
case 6:{
return 6;
}
case 7:{
return 2;
}
case 8:{
return 5;
}
case 9:{
return 0;
}
case 10:{
return 3;
}
default:{
return 5;
}
}
}
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;
}
}
}
}