convertToEthiopianDate static method
Implementation
static EthiopianDateTime convertToEthiopianDate(DateTime datetime) {
weekDays = datetime.weekday;
if (DateTime.january >= datetime.month ||
datetime.month <= DateTime.september) {
if (datetime.month != DateTime.september) {
year = datetime.year - 8;
} else if (datetime.month == DateTime.september &&
(datetime.year % 4 + 1) != 0 &&
datetime.day < 11) {
year = datetime.year - 8;
} else if (datetime.month == DateTime.september &&
(datetime.year + 1) % 4 == 0 &&
datetime.day < 12) {
year = datetime.year - 8;
} else {
year = datetime.year - 7;
}
} else {
year = datetime.year - 7;
}
var tempYear = year - 1;
if (DateTime.january == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 10) {
month = 4;
date = datetime.day + 31 - 10;
} else {
month = 5;
date = datetime.day - 9;
}
} else {
if (datetime.day < 9) {
month = 4;
date = datetime.day + 31 - 9;
} else {
month = 5;
date = datetime.day - 8;
}
}
} else if (DateTime.february == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 10) {
month = 5;
date = datetime.day + 31 - 9;
} else {
month = 6;
date = datetime.day - 8;
}
} else {
if (datetime.day < 8) {
month = 5;
date = datetime.day + 31 - 8;
} else {
month = 6;
date = datetime.day - 7;
}
}
} else if (DateTime.march == datetime.month) {
if (datetime.day < 10) {
month = 6;
date = datetime.day + 29 - 8;
} else {
month = 7;
date = datetime.day - 9;
}
} else if (DateTime.april == datetime.month) {
if (datetime.day < 9) {
month = 7;
date = datetime.day + 30 - 8;
} else {
month = 8;
date = datetime.day - 8;
}
} else if (DateTime.may == datetime.month) {
if (datetime.day < 9) {
month = 8;
date = datetime.day + 30 - 8;
} else {
month = 9;
date = datetime.day - 8;
}
} else if (DateTime.june == datetime.month) {
if (datetime.day < 8) {
month = 9;
date = datetime.day + 31 - 8;
} else {
month = 10;
date = datetime.day - 7;
}
} else if (DateTime.july == datetime.month) {
if (datetime.day < 8) {
month = 10;
date = datetime.day + 30 - 7;
} else {
month = 11;
date = datetime.day - 7;
}
} else if (DateTime.august == datetime.month) {
if (datetime.day < 7) {
month = 11;
date = datetime.day + 31 - 7;
} else {
month = 12;
date = datetime.day - 6;
}
} else if (DateTime.september == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 6) {
month = 12;
date = datetime.day + 31 - 6;
} else {
if (datetime.day <= 11) {
month = 13;
date = datetime.day - 5;
} else {
month = 1;
date = datetime.day - 11;
}
}
} else {
if (datetime.day < 6) {
month = 12;
date = datetime.day + 31 - 6;
} else {
if (datetime.day <= 11) {
month = 13;
date = datetime.day - 5;
} else {
month = 1;
date = datetime.day - 11;
}
}
}
} else if (DateTime.october == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 12) {
month = 1;
date = datetime.day + 30 - 11;
} else {
month = 2;
date = datetime.day - 11;
}
} else {
if (datetime.day < 11) {
month = 1;
date = datetime.day + 30 - 10;
} else {
month = 2;
date = datetime.day - 10;
}
}
} else if (DateTime.november == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 11) {
month = 2;
date = datetime.day + 31 - 11;
} else {
month = 3;
date = datetime.day - 10;
}
} else {
if (datetime.day < 10) {
month = 2;
date = datetime.day + 31 - 10;
} else {
month = 3;
date = datetime.day - 9;
}
}
} else if (DateTime.december == datetime.month) {
if (tempYear % 4 == 3) {
if (datetime.day < 11) {
month = 3;
date = datetime.day + 30 - 10;
} else {
month = 4;
date = datetime.day - 10;
}
} else {
if (datetime.day < 10) {
month = 3;
date = datetime.day + 30 - 9;
} else {
month = 4;
date = datetime.day - 9;
}
}
}
String? timeRange;
if ((datetime.hour >= 6 && datetime.hour < 18)) {
if (datetime.hour == 6 || (datetime.hour >= 7 && datetime.hour <= 11)) {
timeRange = "Tewat";
} else {
timeRange = "Qen";
}
} else {
if (datetime.hour == 18 || (datetime.hour >= 18 && datetime.hour <= 23)) {
timeRange = "Mata";
} else {
timeRange = "Lelit";
}
}
int hour = datetime.hour;
var input = DateTime(datetime.year, datetime.month, datetime.day,
datetime.hour, datetime.minute, 0);
var minDateMidNight =
DateTime(datetime.year, datetime.month, datetime.day, 00, 00, 00);
var maxDateMidNight =
DateTime(datetime.year, datetime.month, datetime.day, 05, 59, 59);
var minDateDay =
DateTime(datetime.year, datetime.month, datetime.day, 06, 00, 00);
var maxDateDay =
DateTime(datetime.year, datetime.month, datetime.day, 18, 59, 59);
var minDateNight =
DateTime(datetime.year, datetime.month, datetime.day, 19, 00, 00);
var maxDateNight =
DateTime(datetime.year, datetime.month, datetime.day, 23, 59, 59);
if (input.isAfter(minDateMidNight) && input.isBefore(maxDateMidNight)) {
hour = hour + 6;
date--;
}
if (input.isAfter(minDateDay) && input.isBefore(maxDateDay)) {
hour = hour - 6;
}
if (input.isAfter(minDateNight) && input.isBefore(maxDateNight)) {
hour = hour - 18;
}
if (hour == 0) hour = 12;
EthiopianDateTime ethiopianDate = EthiopianDateTime(
year,
month,
date,
hour,
datetime.minute,
datetime.second,
datetime.millisecond,
datetime.microsecond,
timeRange);
return ethiopianDate;
}