123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
-
-
- export const MILLISECONDS_A_SECOND = 1e3
- export const MILLISECONDS_A_MINUTE = 60 * MILLISECONDS_A_SECOND
- export const MILLISECONDS_A_HOUR = 60 * MILLISECONDS_A_MINUTE
- export const MILLISECONDS_A_DAY = 24 * MILLISECONDS_A_HOUR
-
- export const diff = (dt1, dt2) => {
- if (!dt1 || !dt2) return [];
-
- const bw = new Date(dt1) - new Date(dt2)
- const day = Math.floor(bw / MILLISECONDS_A_DAY)
- const hour = Math.floor(bw % MILLISECONDS_A_DAY / MILLISECONDS_A_HOUR)
- const min = Math.floor(bw % MILLISECONDS_A_DAY % MILLISECONDS_A_HOUR / MILLISECONDS_A_MINUTE)
- const sec = Math.floor(bw % MILLISECONDS_A_DAY % MILLISECONDS_A_HOUR % MILLISECONDS_A_MINUTE / MILLISECONDS_A_SECOND)
- return [bw, day, hour, min, sec]
- }
-
-
- export function formatDate(dt, fmt) {
- const date = new Date(dt)
-
- var o = {
- "M+": date.getMonth() + 1,
- "d+": date.getDate(),
- "h+": date.getHours(),
- "m+": date.getMinutes(),
- "s+": date.getSeconds(),
- "q+": Math.floor((date.getMonth() + 3) / 3),
- "S": date.getMilliseconds()
- };
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
- return fmt;
- };
-
-
-
- export function getDateForHumans(dt, mustIncludeTime, format='yyyy-M-d') {
-
-
- var currentDate = new Date();
-
- var srcDate = new Date(dt);
-
- var currentYear = currentDate.getFullYear();
- var currentMonth = (currentDate.getMonth() + 1);
- var currentDateD = currentDate.getDate();
-
- var srcYear = srcDate.getFullYear();
- var srcMonth = (srcDate.getMonth() + 1);
- var srcDateD = srcDate.getDate();
-
- var ret = "";
-
-
- var timeExtraStr = (mustIncludeTime ? " " + formatDate(srcDate, "hh:mm") : "");
-
-
- if (currentYear == srcYear) {
-
- var deltaTime = (currentDate - srcDate);
-
-
- if (currentMonth == srcMonth && currentDateD == srcDateD) {
-
- if (deltaTime < 60 * 1000)
- ret = "刚刚";
-
- else
- ret = formatDate(srcDate, "hh:mm");
- }
-
- else {
-
- var yesterdayDate = new Date();
- yesterdayDate.setDate(yesterdayDate.getDate() - 1);
-
-
- var beforeYesterdayDate = new Date();
- beforeYesterdayDate.setDate(beforeYesterdayDate.getDate() - 2);
-
-
-
-
- if (srcMonth == (yesterdayDate.getMonth() + 1) && srcDateD == yesterdayDate.getDate())
- ret = "昨天" + timeExtraStr;
-
- else if (srcMonth == (beforeYesterdayDate.getMonth() + 1) && srcDateD == beforeYesterdayDate.getDate())
- ret = "前天" + timeExtraStr;
- else {
-
- var deltaHour = (deltaTime / (3600 * 1000));
-
-
- if (deltaHour <= 7 * 24) {
- var weekday = new Array(7);
- weekday[0] = "星期日";
- weekday[1] = "星期一";
- weekday[2] = "星期二";
- weekday[3] = "星期三";
- weekday[4] = "星期四";
- weekday[5] = "星期五";
- weekday[6] = "星期六";
-
-
- var weedayDesc = weekday[srcDate.getDay()];
- ret = weedayDesc + timeExtraStr;
- }
-
- else
- ret = formatDate(srcDate, format) + timeExtraStr;
- }
- }
- }
-
- else {
- ret = formatDate(srcDate, format) + timeExtraStr;
- }
- return ret;
- };
|