计算两个日期相差多少年 计算两个日期相差多少月 计算两个日期相差多少天 计算两个日期相差多少分钟 计算两个日期相差多少秒 计算两个日期相差多少毫秒 获取当天(不足两位,拼0处理) 获取昨天 获取前天 获取明天 获取后天 获取本周开始 获取本周结束 获取上周开始 获取上周结束 获取本月第一天 获取本月最后一天 获取周几 获取一个月有多少天 class DateUtils { /** * 计算两个日期相差多少年 */ static int daysBetweenYear(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v ~/ 86400000 * 30 * 12; } /** * 计算两个日期相差多少月 */ static int daysBetweenMonth(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v ~/ 86400000 * 30; } /** * 计算两个日期相差多少天 */ static int daysBetweenDay(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v ~/ 86400000; } /** * 计算两个日期相差多少分钟 */ static int daysBetweenMin(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v ~/ 60000; } /** * 计算两个日期相差多少秒 */ static int daysBetweenSecond(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v ~/ 1000; } /** * 计算两个日期相差多少毫秒 */ static int daysBetweenMillSecond(DateTime a, DateTime b) { int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch; return v; } /** * 获取当天(不足两位,拼0处理) * space 需要拼接日期的字段 */ static String getYYYYMMDD(DateTime dateTime, String space) { String year = dateTime.year.toString(); String month = dateTime.month.toString().length == 1 ? "0${dateTime.month}" : dateTime.month.toString(); String day = dateTime.day.toString().length == 1 ? "0${dateTime.day}" : dateTime.day.toString(); return "${year}${space}${month}${space}${day}"; } /** * 获取当天(不足两位,拼0处理) * space 需要拼接日期的字段 */ static String getYYYYMMDDHHMMSS(DateTime dateTime, String space) { String year = dateTime.year.toString(); String month = dateTime.month.toString().length == 1 ? "0${dateTime.month}" : dateTime.month.toString(); String day = dateTime.day.toString().length == 1 ? "0${dateTime.day}" : dateTime.day.toString(); String hour = dateTime.hour.toString().length == 1 ? "0${dateTime.hour}" : dateTime.hour.toString(); String minute = dateTime.minute.toString().length == 1 ? "0${dateTime.minute}" : dateTime.minute.toString(); String second = dateTime.second.toString().length == 1 ? "0${dateTime.second}" : dateTime.second.toString(); return "${year}${space}${month}${space}${day} ${hour}${space}${minute}${space}${second}"; } /** * 获取昨天 */ static String getYesterDayYYYYMMDD(DateTime dateTime) { DateTime yesterDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch - (24 * 60 * 60 * 1000)); return getYYYYMMDD(yesterDay, "-"); } /** * 获取前天 */ static String getDayBeforeYesterdayDayYYYYMMDD(DateTime dateTime) { DateTime yesterDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch - (2 * 24 * 60 * 60 * 1000)); return getYYYYMMDD(yesterDay, "-"); } /** * 获取明天 */ static String getTomorrowDayYYYYMMDD(DateTime dateTime) { DateTime yesterDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch + (24 * 60 * 60 * 1000)); return getYYYYMMDD(yesterDay, "-"); } /** * 获取后天 */ static String getTomorrowAcquiredYYYYMMDD(DateTime dateTime) { DateTime yesterDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch + (2 * 24 * 60 * 60 * 1000)); return getYYYYMMDD(yesterDay, "-"); } /** * 获取本周开始 */ static String getWeekFirstDayYYYYMMDD(DateTime dateTime) { int current = dateTime.weekday; DateTime firstDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch - (24 * 60 * 60 * 1000 * (current - 1))); return getYYYYMMDD(firstDay, "-"); } /** * 获取本周结束 */ static String getWeekLastDayYYYYMMDD(DateTime dateTime) { int current = dateTime.weekday; DateTime lastDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch + (24 * 60 * 60 * 1000 * (7 - current))); return getYYYYMMDD(lastDay, "-"); } /** * 获取上周开始 */ static String getLastWeekFirstDayYYYYMMDD(DateTime dateTime) { int current = dateTime.weekday; DateTime firstDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch - (24 * 60 * 60 * 1000 * (current - 1))); DateTime day = new DateTime.fromMillisecondsSinceEpoch( firstDay.millisecondsSinceEpoch - (24 * 60 * 60 * 1000 * 7)); return getYYYYMMDD(day, "-"); } /** * 获取上周结束 */ static String getLastWeekLastDayYYYYMMDD(DateTime dateTime) { int current = dateTime.weekday; DateTime lastDay = new DateTime.fromMillisecondsSinceEpoch( dateTime.millisecondsSinceEpoch + (24 * 60 * 60 * 1000 * (7 - current))); DateTime day = new DateTime.fromMillisecondsSinceEpoch( lastDay.millisecondsSinceEpoch - (24 * 60 * 60 * 1000 * 7)); return getYYYYMMDD(day, "-"); } /** * 获取本月第一天 */ static String getMonthFirstDayYYYYMMDD(DateTime dateTime, String space) { String year = "${DateTime.now().year}"; String month = "${DateTime.now().month}".length == 1 ? "0${DateTime.now().month}" : "${DateTime.now().month}"; return "${year}${space}${month}${space}01"; } /** * 获取本月最后一天 */ static String getMonthLastDayYYYYMMDD(DateTime dateTime, String space) { String year = "${DateTime.now().year}"; String month = "${DateTime.now().month}".length == 1 ? "0${DateTime.now().month}" : "${DateTime.now().month}"; int d = getDayCounts(DateTime.now().month); return "${year}${space}${month}${space}${d}"; } /** * 获取周几 */ static String getWeekday(DateTime dateTime) { if (dateTime == null) return null; String weekday; switch (dateTime.weekday) { case 1: weekday = '星期一'; break; case 2: weekday = '星期二'; break; case 3: weekday = '星期三'; break; case 4: weekday = '星期四'; break; case 5: weekday = '星期五'; break; case 6: weekday = '星期六'; break; case 7: weekday = '星期日'; break; default: break; } return weekday; } /** * 获取一个月有多少天 */ static int getDayCounts(int month) { int year = DateTime.now().year; int end = 0; if (month == 1) { end = 31; } else if (month == 2) { if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { end = 29; } else { end = 28; } } else if (month == 3) { end = 31; } else if (month == 4) { end = 30; } else if (month == 5) { end = 31; } else if (month == 6) { end = 30; } else if (month == 7) { end = 31; } else if (month == 8) { end = 31; } else if (month == 9) { end = 30; } else if (month == 10) { end = 31; } else if (month == 11) { end = 30; } else if (month == 12) { end = 31; } return end; } }