import 'package:flutter/material.dart'; Map _months = { 1: "Jan", 2: "Feb", 3: "March", 4: "April", 5: "May", 6: "Jun", 7: "July", 8: "Aug", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dec", }; Map _fullMonths = { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December", }; Map _days = { 1: "Mon", 2: "Tue", 3: "Wed", 4: "Thu", 5: "Fri", 6: "Sat", 7: "Sun", }; String getMonthAndYear(DateTime dateTime) { return _months[dateTime.month] + " " + dateTime.year.toString(); } String getDayAndMonth(DateTime dateTime) { return _days[dateTime.weekday] + ", " + dateTime.day.toString() + " " + _months[dateTime.month]; } String getDateAndMonthAndYear(DateTime dateTime) { return dateTime.day.toString() + " " + _months[dateTime.month] + ", " + dateTime.year.toString(); } String getDay(DateTime dateTime) { return _days[dateTime.weekday]; } String getMonth(DateTime dateTime) { return _months[dateTime.month]; } String getFullMonth(DateTime dateTime) { return _fullMonths[dateTime.month]; } String getAbbreviationOfYear(DateTime dateTime) { return (dateTime.year % 100).toString(); } String getTime(DateTime dateTime) { final hours = dateTime.hour > 9 ? dateTime.hour.toString() : "0" + dateTime.hour.toString(); final minutes = dateTime.minute > 9 ? dateTime.minute.toString() : "0" + dateTime.minute.toString(); return hours + ":" + minutes; } String getFormattedTime(DateTime dateTime) { return getDay(dateTime) + ", " + getMonth(dateTime) + " " + dateTime.day.toString() + ", " + dateTime.year.toString() + " - " + getTime(dateTime); } String getFormattedDate(DateTime dateTime) { return dateTime.day.toString() + " " + getMonth(dateTime) + "'" + getAbbreviationOfYear(dateTime); } String daysLeft(int futureTime) { int daysLeft = ((futureTime - DateTime.now().microsecondsSinceEpoch) / Duration.microsecondsPerDay) .ceil(); return '$daysLeft day' + (daysLeft <= 1 ? "" : "s"); } String formatDuration(Duration position) { final ms = position.inMilliseconds; int seconds = ms ~/ 1000; final int hours = seconds ~/ 3600; seconds = seconds % 3600; var minutes = seconds ~/ 60; seconds = seconds % 60; final hoursString = hours >= 10 ? '$hours' : hours == 0 ? '00' : '0$hours'; final minutesString = minutes >= 10 ? '$minutes' : minutes == 0 ? '00' : '0$minutes'; final secondsString = seconds >= 10 ? '$seconds' : seconds == 0 ? '00' : '0$seconds'; final formattedTime = '${hoursString == '00' ? '' : hoursString + ':'}$minutesString:$secondsString'; return formattedTime; } bool isLeapYear(DateTime dateTime) { final year = dateTime.year; if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) { return true; } else { return false; } } else { return true; } } else { return false; } } Widget getDayWidget( BuildContext context, int timestamp, bool smallerTodayFont, ) { return Container( padding: const EdgeInsets.fromLTRB(4, 14, 0, 8), alignment: Alignment.centerLeft, child: Text( getDayTitle(timestamp), style: (getDayTitle(timestamp) == "Today" && !smallerTodayFont) ? Theme.of(context).textTheme.headline5 : Theme.of(context).textTheme.caption.copyWith( fontSize: 16, fontWeight: FontWeight.w600, fontFamily: 'Inter-SemiBold', ), ), ); } String getDayTitle(int timestamp) { final date = DateTime.fromMicrosecondsSinceEpoch(timestamp); final now = DateTime.now(); var title = getDayAndMonth(date); if (date.year == now.year && date.month == now.month) { if (date.day == now.day) { title = "Today"; } else if (date.day == now.day - 1) { title = "Yesterday"; } } if (date.year != DateTime.now().year) { title += " " + date.year.toString(); } return title; }