Files
social-app/apps/lib/features/calendar/presentation/calendar_time_utils.dart
T

59 lines
1.6 KiB
Dart

DateTime weekStartFor(DateTime date) {
return date.subtract(Duration(days: date.weekday % 7));
}
bool isSameDay(DateTime a, DateTime b) {
return a.year == b.year && a.month == b.month && a.day == b.day;
}
bool shouldShowCurrentMarker(DateTime selectedDate, DateTime now) {
return isSameDay(selectedDate, now);
}
String formatHm(DateTime dateTime) {
final hour = dateTime.hour.toString().padLeft(2, '0');
final minute = dateTime.minute.toString().padLeft(2, '0');
return '$hour:$minute';
}
String formatHour(int hour) {
if (hour == 24) {
return '00:00';
}
return '${hour.toString().padLeft(2, '0')}:00';
}
DateTime? parseYmd(String? ymd) {
if (ymd == null) {
return null;
}
final matched = RegExp(r'^(\d{4})-(\d{2})-(\d{2})$').firstMatch(ymd);
if (matched == null) {
return null;
}
final year = int.parse(matched.group(1)!);
final month = int.parse(matched.group(2)!);
final day = int.parse(matched.group(3)!);
final parsed = DateTime(year, month, day);
if (parsed.year != year || parsed.month != month || parsed.day != day) {
return null;
}
return parsed;
}
String formatYmd(DateTime dateTime) {
final year = dateTime.year.toString().padLeft(4, '0');
final month = dateTime.month.toString().padLeft(2, '0');
final day = dateTime.day.toString().padLeft(2, '0');
return '$year-$month-$day';
}
List<DateTime> monthDatesFor(DateTime date) {
final monthStart = DateTime(date.year, date.month, 1);
final monthEnd = DateTime(date.year, date.month + 1, 0);
return List.generate(
monthEnd.day,
(index) => DateTime(monthStart.year, monthStart.month, index + 1),
);
}