gregorianToEthiopian static method

Map<String, int> gregorianToEthiopian({
  1. required int year,
  2. required int month,
  3. required int day,
})

Convert Gregorian date to Ethiopian date Input: year, month, day in Gregorian calendar Returns: Map with 'year', 'month', 'day' keys for Ethiopian date

Implementation

static Map<String, int> gregorianToEthiopian({
  required int year,
  required int month,
  required int day,
}) {
  try {
    // Use UTC to avoid timezone-related off-by-one errors
    final gregorianDate = DateTime.utc(year, month, day);
    // Convert using EtDatetime
    final ethiopianDate = EtDatetime.fromMillisecondsSinceEpoch(
      gregorianDate.millisecondsSinceEpoch,
    );

    return {
      'year': ethiopianDate.year,
      'month': ethiopianDate.month,
      'day': ethiopianDate.day,
    };
  } catch (e) {
    throw Exception('Invalid Gregorian date: $e');
  }
}