104 lines
4.3 KiB
Dart
104 lines
4.3 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:intl/intl.dart';
|
|
import 'package:yumi/app_localizations.dart';
|
|
|
|
class SCMDateUtils {
|
|
static const num ONE_HOUR = 3600000;
|
|
static const num ONE_DAY = 86400000;
|
|
static const num ONE_WEEK = 604800000;
|
|
static final String _ft1 = "yyyy-MM-dd";
|
|
static final String _ft2 = "yyyy/MM/dd/ HH:mm:ss";
|
|
static final String _ft3 = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
static String formatDateTime(DateTime date) {
|
|
return DateFormat(_ft1).format(date);
|
|
}
|
|
|
|
static String formatDateTime2(DateTime date) {
|
|
return DateFormat(_ft2).format(date);
|
|
}
|
|
|
|
static String formatDateTime3(DateTime date) {
|
|
return DateFormat(_ft3).format(date);
|
|
}
|
|
|
|
static String formatMessageTime(BuildContext context, DateTime date) {
|
|
var now = DateTime.now();
|
|
num delta = now.millisecondsSinceEpoch - date.millisecondsSinceEpoch;
|
|
// LogUtils.log(
|
|
// "Delta:$delta,now.millisecondsSinceEpoch:${now.millisecondsSinceEpoch},date.millisecondsSinceEpoch:${date.millisecondsSinceEpoch}");
|
|
if (delta < 1 * ONE_DAY) {
|
|
if (date.day < now.day) {
|
|
return SCAppLocalizations.of(context)!.yesterday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
} else {
|
|
return "${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}";
|
|
}
|
|
} else if (delta < 1 * ONE_WEEK) {
|
|
switch (date.weekday) {
|
|
case DateTime.monday:
|
|
return SCAppLocalizations.of(context)!.monday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.tuesday:
|
|
return SCAppLocalizations.of(context)!.tuesday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.wednesday:
|
|
return SCAppLocalizations.of(context)!.wednesday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.thursday:
|
|
return SCAppLocalizations.of(context)!.thursday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.friday:
|
|
return SCAppLocalizations.of(context)!.friday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.saturday:
|
|
return SCAppLocalizations.of(context)!.saturday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
case DateTime.sunday:
|
|
return SCAppLocalizations.of(context)!.sunday(
|
|
"${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}",
|
|
);
|
|
}
|
|
} else {
|
|
return "${date.year}/${date.month}/${date.day} ${date.hour >= 10 ? date.hour : "0${date.hour}"}:${date.minute >= 10 ? date.minute : "0${date.minute}"}";
|
|
}
|
|
return "";
|
|
}
|
|
|
|
static int calculateDaysDifference(DateTime from, DateTime to) {
|
|
// 归一化日期(忽略时间部分,确保按整天计算)
|
|
from = DateTime(from.year, from.month, from.day);
|
|
to = DateTime(to.year, to.month, to.day);
|
|
|
|
// 计算差值并返回天数
|
|
return to.difference(from).inDays;
|
|
}
|
|
|
|
static String secondsToMinutes(int seconds) {
|
|
Duration duration = Duration(seconds: seconds);
|
|
return _df(duration);
|
|
}
|
|
|
|
static String millisecondsToMinutes(int milliseconds) {
|
|
Duration duration = Duration(milliseconds: milliseconds);
|
|
return _df(duration);
|
|
}
|
|
|
|
static String _df(Duration duration) {
|
|
String twoDigits(int n) => n.toString().padLeft(2, "0");
|
|
|
|
if (duration.inHours > 0) {
|
|
return "${twoDigits(duration.inHours)}:${twoDigits(duration.inMinutes.remainder(60))}:${twoDigits(duration.inSeconds.remainder(60))}";
|
|
} else {
|
|
return "${twoDigits(duration.inMinutes.remainder(60))}:${twoDigits(duration.inSeconds.remainder(60))}";
|
|
}
|
|
}
|
|
}
|