calendar method
String
calendar(
- Moment moment, {
- DateTime? reference,
- String? customFormat,
- bool omitHours = false,
- bool omitHoursIfDistant = true,
inherited
Calendar string
Implementation
@override
String calendar(
Moment moment, {
DateTime? reference,
String? customFormat,
bool omitHours = false,
bool omitHoursIfDistant = true,
}) {
reference ??= Moment.nowWithTimezone(moment.isUtc);
late final String dateString;
final int deltaDays = moment.differenceInDays(reference);
final String? deltaDaysName =
complexCalendarData.relativeDayNames[deltaDays];
if (deltaDaysName != null) {
dateString = deltaDaysName;
} else {
/// If it occured before [reference]
if (moment < reference) {
final DateTime weekBefore = reference.subtract(const Duration(days: 7));
if (moment.isBefore(weekBefore)) {
if (omitHoursIfDistant) {
omitHours = true;
}
dateString = moment.format(
customFormat ?? MomentLocalization.localizationDefaultDateFormat,
);
} else {
dateString = complexCalendarData.keywords.lastWeekday(
moment,
reference: reference,
);
}
}
/// If it occured after [reference]
else {
final DateTime weekAfter = reference.add(const Duration(days: 7));
/// If it's this or next week (relative to the reference)
if (moment.isBefore(weekAfter)) {
dateString = complexCalendarData.keywords.nextWeekday(
moment,
reference: reference,
);
} else {
if (omitHoursIfDistant) {
omitHours = true;
}
dateString = moment.format(
customFormat ?? MomentLocalization.localizationDefaultDateFormat,
);
}
}
}
if (customFormat != null) return dateString;
if (omitHours) {
return dateString;
}
return complexCalendarData.keywords.at(
moment,
dateString,
calendarTime(moment),
reference: reference,
);
}