getBanglaDateMonthYearSeason static method

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

Returns map of Bangla weekday, day, month, month name, year, season for a given English date

BanglaUtility.getBanglaDateMonthYearSeason(day:31, month:05, year: 2020) == {
      "weekday": 'রবিবার',
      "day": '১৭',
      "month": '৫',
      "monthName": 'জ্যৈষ্ঠ',
      "year": '১৪২৭',
      "season": 'গ্রীষ্ম'
    }

Implementation

static Map<String, String> getBanglaDateMonthYearSeason(
    {int? day, int? month, int? year}) {
  int banglaDay;
  int banglaMonth;
  String banglaMonthName;
  String banglaYear;

  if (day == null && month == null && year == null) {
    DateTime now = DateTime.now();
    year = now.year;
    month = now.month;
    day = now.day;
  }
  String banglaWeekday = getBanglaWeekday(day: day, month: month, year: year);
  month = month! - 1;
  banglaYear = getBanglaYear(day: day, month: month, year: year);

  if (day! <= kGregEquivalentLastDayOfBanglaMonths[month]) {
    int totalDaysInCurrentBanglaMonth = kTotalDaysInBanglaMonths[month];
    if (month == kGregEquivalentLeapYearIndexInBanglaMonths &&
        isLeapYear(year: year)) {
      totalDaysInCurrentBanglaMonth += 1;
    }
    banglaDay = totalDaysInCurrentBanglaMonth +
        day -
        kGregEquivalentLastDayOfBanglaMonths[month];
    banglaMonth = month;
    banglaMonthName = kGregEquivalentBanglaMonths[banglaMonth];
  } else {
    banglaDay = day - kGregEquivalentLastDayOfBanglaMonths[month];
    banglaMonth = (month + 1) % 12;
    banglaMonthName = kGregEquivalentBanglaMonths[banglaMonth];
  }

  String banglaSeason = kGregEquivalentBanglaSeasons[banglaMonth ~/ 2];

  var banglaDateMonthYearSeason = {
    "weekday": banglaWeekday,
    "day": englishToBanglaDigit(englishDigit: banglaDay),
    "month": englishToBanglaDigit(englishDigit: banglaMonth),
    "monthName": banglaMonthName,
    "year": banglaYear,
    "season": banglaSeason
  };

  return banglaDateMonthYearSeason;
}