feat(delete):删除里面文件夹
This commit is contained in:
368
lib/utils/date_utils.dart
Executable file
368
lib/utils/date_utils.dart
Executable file
@@ -0,0 +1,368 @@
|
||||
import 'package:flustars_flutter3/flustars_flutter3.dart';
|
||||
|
||||
enum DateTimeUtilsType {
|
||||
yearMonthDayHourMinuteSecond, // 2024-01-01 01:01:01
|
||||
yearMonthDayHourMinute, // 2024-01-01 01:01
|
||||
yearMonthDay, // 2024-01-01
|
||||
monthDay, //01-01
|
||||
monthDayPoint, //01.01
|
||||
monthDayWord, //01月01日
|
||||
yearMonthDayPoint, // 2024.01.01
|
||||
yearMonthDayHourMinutePoint, // 2024.01.01
|
||||
yearMonthDayHourMinuteSecondPoint, // 2024.01.01 01:01:01
|
||||
yearMonthDayWord, // 2024年01月01日
|
||||
yearMonthWord, // 2024年01月
|
||||
yearMonth, // 2024-01
|
||||
yearMonthPoint, // 2024.01
|
||||
hourMinuteSecond, // 01:01:01
|
||||
hourMinute, // 01:01
|
||||
monthDayLine, // 01:01
|
||||
monthWord, //01月
|
||||
monthDayHourMinutePoint, //01月
|
||||
}
|
||||
|
||||
///日期处理类
|
||||
class DateTimeUtils {
|
||||
static String dateTimeUtilsTool({
|
||||
DateTimeUtilsType? dateTimeUtilsType,
|
||||
String? dateTime,
|
||||
String nullString = '-- --',
|
||||
}) {
|
||||
if (dateTime == null || dateTime == '') return nullString;
|
||||
DateTime date = DateTime.parse(dateTime).toLocal();
|
||||
switch (dateTimeUtilsType) {
|
||||
case null:
|
||||
return nullString;
|
||||
case DateTimeUtilsType.yearMonthDayHourMinuteSecond:
|
||||
return '${date.year.toString()}'
|
||||
'-${date.month.toString().padLeft(2, '0')}'
|
||||
'-${date.day.toString().padLeft(2, '0')}'
|
||||
' ${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}'
|
||||
':${date.second.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthDayHourMinute:
|
||||
return '${date.year.toString()}'
|
||||
'-${date.month.toString().padLeft(2, '0')}'
|
||||
'-${date.day.toString().padLeft(2, '0')}'
|
||||
' ${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthDay:
|
||||
return '${date.year.toString()}'
|
||||
'-${date.month.toString().padLeft(2, '0')}'
|
||||
'-${date.day.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.monthDay:
|
||||
return '${date.month.toString().padLeft(2, '0')}'
|
||||
'-${date.day.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.monthDayPoint:
|
||||
return '${date.month.toString().padLeft(2, '0')}'
|
||||
'.${date.day.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.monthDayWord:
|
||||
return '${date.month.toString().padLeft(2, '0')}月'
|
||||
'${date.day.toString().padLeft(2, '0')}日';
|
||||
case DateTimeUtilsType.yearMonthDayPoint:
|
||||
return '${date.year.toString()}'
|
||||
'.${date.month.toString().padLeft(2, '0')}'
|
||||
'.${date.day.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthDayHourMinuteSecondPoint:
|
||||
return '${date.year.toString()}'
|
||||
'.${date.month.toString().padLeft(2, '0')}'
|
||||
'.${date.day.toString().padLeft(2, '0')}'
|
||||
' ${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}'
|
||||
':${date.second.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthDayHourMinutePoint:
|
||||
return '${date.year.toString()}'
|
||||
'.${date.month.toString().padLeft(2, '0')}'
|
||||
'.${date.day.toString().padLeft(2, '0')}'
|
||||
' ${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthDayWord:
|
||||
return '${date.year.toString()}'
|
||||
'年${date.month.toString().padLeft(2, '0')}'
|
||||
'月${date.day.toString().padLeft(2, '0')}日';
|
||||
case DateTimeUtilsType.yearMonthWord:
|
||||
return '${date.year.toString()}'
|
||||
'年${date.month.toString().padLeft(2, '0')}月';
|
||||
case DateTimeUtilsType.yearMonth:
|
||||
return '${date.year.toString()}'
|
||||
'-${date.month.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.yearMonthPoint:
|
||||
return '${date.year.toString()}'
|
||||
'.${date.month.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.hourMinuteSecond:
|
||||
return '${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}'
|
||||
':${date.second.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.hourMinute:
|
||||
return '${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.monthDayLine:
|
||||
return '${date.month.toString().padLeft(2, '0')}'
|
||||
'/${date.day.toString().padLeft(2, '0')}';
|
||||
case DateTimeUtilsType.monthWord:
|
||||
return '${date.month.toString().padLeft(2, '0')}月';
|
||||
case DateTimeUtilsType.monthDayHourMinutePoint:
|
||||
return '${date.month.toString().padLeft(2, '0')}'
|
||||
'.${date.day.toString().padLeft(2, '0')}'
|
||||
' ${date.hour.toString().padLeft(2, '0')}'
|
||||
':${date.minute.toString().padLeft(2, '0')}';
|
||||
}
|
||||
}
|
||||
|
||||
/// 计算两个日期相差多少天?
|
||||
static int differenceTwoTimes({
|
||||
String? startTime,
|
||||
String? endTime,
|
||||
}) {
|
||||
var startDate =
|
||||
startTime == null ? DateTime.now() : DateTime.parse(startTime);
|
||||
var endDate = endTime == null ? DateTime.now() : DateTime.parse(endTime);
|
||||
var days = endDate.difference(startDate).inDays;
|
||||
return days;
|
||||
}
|
||||
|
||||
/// 计算两个日期相差inMinutes?
|
||||
static int differenceTwoInMinutesTimes({
|
||||
String? startTime,
|
||||
String? endTime,
|
||||
}) {
|
||||
var startDate =
|
||||
startTime == null ? DateTime.now() : DateTime.parse(startTime);
|
||||
var endDate = endTime == null ? DateTime.now() : DateTime.parse(endTime);
|
||||
var days = endDate.difference(startDate).inMinutes;
|
||||
return days;
|
||||
}
|
||||
|
||||
|
||||
/// 计算两个日期相差day huor min?
|
||||
static String differenceTwoDayHourTimes({
|
||||
String? startTime,
|
||||
String? endTime,
|
||||
|
||||
}) {
|
||||
|
||||
String xxxxx = '0';
|
||||
var startDate =
|
||||
startTime == null ? DateTime.now() : DateTime.parse(startTime);
|
||||
var endDate = endTime == null ? DateTime.now() : DateTime.parse(endTime);
|
||||
var days = endDate.difference(startDate).inDays;
|
||||
if(days == 0){
|
||||
//days == 0 相当
|
||||
var hours = endDate.difference(startDate).inHours;
|
||||
|
||||
if(hours == 0){
|
||||
var minutes = endDate.difference(startDate).inMinutes;
|
||||
xxxxx = '$minutes分';
|
||||
}else{
|
||||
// xxxxx = hours;
|
||||
var minutes = endDate.difference(startDate).inMinutes;
|
||||
|
||||
xxxxx = '${minutes ~/ 60}小时${minutes % 60}分';
|
||||
}
|
||||
}else{
|
||||
// xxxxx = days;
|
||||
var hours = endDate.difference(startDate).inHours;
|
||||
int divisor = 24; // 除数
|
||||
int quotient = hours ~/ divisor; // 取整除法,得到商
|
||||
int remainder = hours % divisor; // 取余数,得到余数
|
||||
//
|
||||
// print('商: $quotient');
|
||||
// print('余数: $remainder');
|
||||
xxxxx = '$quotient天$remainder小时';
|
||||
}
|
||||
return xxxxx;
|
||||
}
|
||||
|
||||
|
||||
|
||||
///获取当前月份
|
||||
static String getCurrentMonth() {
|
||||
DateTime date = DateTime.now();
|
||||
return date.month.toString().padLeft(2, '0');
|
||||
}
|
||||
|
||||
///获取当前的年月日
|
||||
static String getCurrentYMD() {
|
||||
DateTime date = DateTime.now();
|
||||
return '${date.year.toString()}'
|
||||
'-${date.month.toString().padLeft(2, '0')}'
|
||||
'-${date.day.toString().padLeft(2, '0')}';
|
||||
}
|
||||
|
||||
///判断时间是否在某个时间区间内
|
||||
static bool isTimeInRange({
|
||||
required DateTime startTime,
|
||||
required DateTime endTime,
|
||||
required DateTime dateTime,
|
||||
}) {
|
||||
return dateTime.isAfter(startTime) && dateTime.isBefore(endTime);
|
||||
}
|
||||
|
||||
///获取当月份
|
||||
static String get getMonth {
|
||||
return DateTime.now().month.toString();
|
||||
}
|
||||
|
||||
///获取当年份
|
||||
static String get getYear {
|
||||
return DateTime.now().year.toString();
|
||||
}
|
||||
|
||||
///获取当年份
|
||||
static String getGMTString() {
|
||||
|
||||
return DateTime.now().year.toString();
|
||||
}
|
||||
|
||||
///获取当前属于第几周
|
||||
static String getWeekDay(DateTime dateTime) {
|
||||
List<String> weekday = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
|
||||
return weekday[dateTime.weekday - 1];
|
||||
}
|
||||
|
||||
///根据日期获取某月的第一天和最后一天
|
||||
static Map<String, dynamic> getMonthStartAndMonthEnd(
|
||||
{required DateTime dateTime}) {
|
||||
DateTime monthStart = DateTime(
|
||||
dateTime.year,
|
||||
dateTime.month,
|
||||
1,
|
||||
); // 获取本月第一天的日期时间
|
||||
DateTime monthEnd = DateTime(
|
||||
dateTime.year,
|
||||
dateTime.month + 1,
|
||||
0,
|
||||
23,
|
||||
59,
|
||||
59,
|
||||
); // 获取本月最后一天的日期时间(时间为23:59:59)
|
||||
return {
|
||||
'monthStart': monthStart,
|
||||
'monthEnd': monthEnd,
|
||||
};
|
||||
}
|
||||
//
|
||||
// DateTime monthStart = DateTime(
|
||||
// int.parse(time.toString().split('-').first),
|
||||
// int.parse(time.toString().split('-').last),
|
||||
// 1); // 获取本月第一天的日期时间
|
||||
// DateTime monthEnd = DateTime(
|
||||
// int.parse(time.toString().split('-').first),
|
||||
// int.parse(time.toString().split('-').last) + 1,
|
||||
// 0,
|
||||
// 23,
|
||||
// 59,
|
||||
// 59); // 获取本月最后一天的日期时间(时间为23:59:59)
|
||||
/// /
|
||||
}
|
||||
|
||||
class TimeMachineUtil {
|
||||
/// 获取某一年的第一个月的第一天和最后一个月的最后一天
|
||||
static getStartEndYearDate(int iYear) {
|
||||
Map mapDate = {};
|
||||
int yearNow = DateTime.now().year;
|
||||
yearNow = yearNow + iYear;
|
||||
|
||||
String newStartYear = '$yearNow-01-01';
|
||||
String newEndtYear = '${yearNow + 1}-01-00';
|
||||
|
||||
mapDate['startTime'] = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(turnTimestamp(newStartYear)),
|
||||
format: 'yyyy-MM-dd');
|
||||
mapDate['endTime'] = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(turnTimestamp(newEndtYear)),
|
||||
format: 'yyyy-MM-dd');
|
||||
|
||||
mapDate['startStamp'] = turnTimestamp(mapDate['startTime'] + ' 00:00:00');
|
||||
mapDate['endStamp'] = turnTimestamp(mapDate['endTime'] + ' 23:59:59');
|
||||
print('某一年初和年末:$mapDate');
|
||||
}
|
||||
|
||||
/// 获得当前日期 未来/过去 第某个月第一天和最后一天时间
|
||||
static Map<String, String> getMonthDate(int iMonth) {
|
||||
//获取当前日期
|
||||
var currentDate = DateTime.now();
|
||||
if (iMonth + currentDate.month > 0) {
|
||||
return timeConversion(
|
||||
iMonth + currentDate.month, (currentDate.year).toString());
|
||||
} else {
|
||||
int beforeYear = (iMonth + currentDate.month) ~/ 12;
|
||||
String yearNew = (currentDate.year + beforeYear - 1).toString();
|
||||
int monthNew = (iMonth + currentDate.month) - beforeYear * 12;
|
||||
return timeConversion(12 + monthNew, yearNew);
|
||||
}
|
||||
}
|
||||
|
||||
static Map<String, String> timeConversion(int monthTime, String yearTime) {
|
||||
Map<String, String> dateMap = {};
|
||||
dateMap['startDate'] =
|
||||
'$yearTime-${monthTime < 10 ? '0$monthTime' : '$monthTime'}-01';
|
||||
//转时间戳再转时间格式 防止出错
|
||||
dateMap['startDate'] = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(
|
||||
turnTimestamp(dateMap['startDate'] ?? "")),
|
||||
format: 'yyyy-MM-dd');
|
||||
//某个月结束时间,转时间戳再转
|
||||
String endMonth =
|
||||
'$yearTime-${(monthTime + 1) < 10 ? '0${monthTime + 1}' : (monthTime + 1)}-00';
|
||||
var endMonthTimeStamp = turnTimestamp(endMonth);
|
||||
endMonth = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(endMonthTimeStamp),
|
||||
format: 'yyyy-MM-dd');
|
||||
dateMap['endDate'] = endMonth;
|
||||
//这里是为了公司后台接口 需加时间段的时间戳 但不显示在格式化实践中
|
||||
dateMap['startDateStamp'] =
|
||||
turnTimestamp('${dateMap['startDate']} 00:00:00').toString();
|
||||
dateMap['endDateStamp'] =
|
||||
turnTimestamp('${dateMap['endDate']} 23:59:59').toString();
|
||||
// print('过去未来某个月初月末:$dateMap');
|
||||
return dateMap;
|
||||
}
|
||||
|
||||
/// 转时间戳
|
||||
static int turnTimestamp(String timestamp) {
|
||||
return DateTime.parse(timestamp).millisecondsSinceEpoch;
|
||||
}
|
||||
|
||||
/// 当前时间 过去/未来 某个周的周一和周日
|
||||
static Map<String, String> getWeeksDate(int weeks) {
|
||||
Map<String, String> mapTime = {};
|
||||
DateTime now = DateTime.now();
|
||||
int weekday = now.weekday; //今天周几
|
||||
|
||||
var sunDay = getTimestampLatest(false, 7 - weekday + weeks * 7); //周末
|
||||
var monDay = getTimestampLatest(true, -weekday + 1 + weeks * 7); //周一
|
||||
|
||||
mapTime['monDay'] = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(monDay),
|
||||
format: 'yyyy-MM-dd'); //周一 时间格式化
|
||||
mapTime['sunDay'] = DateUtil.formatDate(
|
||||
DateTime.fromMillisecondsSinceEpoch(sunDay),
|
||||
format: 'yyyy-MM-dd'); //周一 时间格式化
|
||||
mapTime['monDayStamp'] = '$monDay'; //周一 时间戳
|
||||
mapTime['sunDayStamp'] = '$sunDay'; //周日 时间戳
|
||||
// print('某个周的周一和周日:$mapTime');
|
||||
return mapTime;
|
||||
}
|
||||
|
||||
/// phase : 是零点还是23:59:59
|
||||
static int getTimestampLatest(bool phase, int day) {
|
||||
String newHours;
|
||||
DateTime now = DateTime.now();
|
||||
DateTime sixtyDaysFromNow = now.add(Duration(days: day));
|
||||
String formattedDate =
|
||||
DateUtil.formatDate(sixtyDaysFromNow, format: 'yyyy-MM-dd');
|
||||
if (phase) {
|
||||
newHours = '$formattedDate 00:00:00';
|
||||
} else {
|
||||
newHours = '$formattedDate 23:59:59';
|
||||
}
|
||||
|
||||
DateTime newDate = DateTime.parse(newHours);
|
||||
// String newFormattedDate =
|
||||
// DateUtil.formatDate(newDate, format: 'yyyy-MM-dd HH:mm:ss');
|
||||
int timeStamp = newDate.millisecondsSinceEpoch;
|
||||
// print('时间' + newFormattedDate);
|
||||
return timeStamp;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user