ente/lib/utils/date_time_util.dart

193 lines
3.9 KiB
Dart
Raw Normal View History

2021-04-20 12:26:42 +00:00
import 'package:flutter/material.dart';
Map<int, String> _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<int, String> _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<int, String> _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];
}
2020-06-13 18:47:48 +00:00
String getDateAndMonthAndYear(DateTime dateTime) {
return dateTime.day.toString() +
" " +
_months[dateTime.month] +
", " +
dateTime.year.toString();
}
2020-06-13 18:47:48 +00:00
String getDay(DateTime dateTime) {
return _days[dateTime.weekday];
}
String getMonth(DateTime dateTime) {
return _months[dateTime.month];
}
String getFullMonth(DateTime dateTime) {
return _fullMonths[dateTime.month];
}
2020-06-13 18:47:48 +00:00
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);
}
2020-06-20 23:51:10 +00:00
2020-07-21 10:25:19 +00:00
String getFormattedDate(DateTime dateTime) {
return getDay(dateTime) +
", " +
getMonth(dateTime) +
" " +
dateTime.day.toString() +
", " +
dateTime.year.toString();
}
String daysLeft(int futureTime) {
int daysLeft = ((futureTime - DateTime.now().microsecondsSinceEpoch) /
Duration.microsecondsPerDay)
.ceil();
return '$daysLeft day' + (daysLeft <= 1 ? "" : "s");
}
2020-06-20 23:51:10 +00:00
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;
2020-11-12 13:25:57 +00:00
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';
2020-06-20 23:51:10 +00:00
final formattedTime =
'${hoursString == '00' ? '' : hoursString + ':'}$minutesString:$secondsString';
return formattedTime;
}
2020-07-21 10:25:19 +00:00
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;
}
}
2021-04-20 12:26:42 +00:00
Widget getDayWidget(int timestamp) {
return Container(
padding: const EdgeInsets.fromLTRB(10, 8, 0, 10),
alignment: Alignment.centerLeft,
child: Text(
getDayTitle(timestamp),
2021-04-20 12:26:42 +00:00
style: TextStyle(
fontSize: 14,
color: Colors.white.withOpacity(0.85),
),
),
);
}
String getDayTitle(int timestamp) {
2021-04-20 12:26:42 +00:00
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;
}