febs
Version:
febs is a useful utilities set
334 lines (296 loc) • 9.91 kB
JavaScript
;
/**
* Copyright (c) 2017 Copyright brainpoint All Rights Reserved.
* Author: lipengxiang
* Desc:
*/
var PromiseLib = Promise;
/**
* @desc: 判断是否是有效时间.
*/
exports.isValidate = function (date/*:Date*/)/*:boolean*/ {
if (isNaN(date) || !date || date.toString() == 'Invalid Date')
return false;
return date instanceof Date;
}
/**
* @desc: 获取时间的string.
* @param time: ms.
* @param fmt: 格式化, 默认为 'HH:mm:ss'
* 年(y)、月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
* 'yyyy-MM-dd hh:mm:ss.S' ==> 2006-07-02 08:09:04.423
* 'yyyy-MM-dd E HH:mm:ss' ==> 2009-03-10 星期二 20:09:04
* 'yyyy-M-d h:m:s.S' ==> 2006-7-2 8:9:4.18
* @param weekFmt: 星期的文字格式, 默认为 {'0':'星期天', '1': '星期一', ..., '6':'星期六'}
* @return: string.
*/
function getTimeString(time, fmt, weekFmt)
{
if (typeof time !== "number")
return "";
fmt = fmt || 'HH:mm:ss';
var t = new Date(time);
var o = {
"M+" : t.getMonth()+1, //月份
"d+" : t.getDate(), //日
"h+" : t.getHours()%12 == 0 ? 12 : t.getHours()%12, //小时
"H+" : t.getHours(), //小时
"m+" : t.getMinutes(), //分
"s+" : t.getSeconds(), //秒
"q+" : Math.floor((t.getMonth()+3)/3), //季度
"S" : t.getMilliseconds() //毫秒
};
var week = weekFmt || {
"0" : "星期天",
"1" : "星期一",
"2" : "星期二",
"3" : "星期三",
"4" : "星期四",
"5" : "星期五",
"6" : "星期六",
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, (t.getFullYear()+"").substr(4 - RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, week[t.getDay()+""]);
}
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;
};
exports.getTimeString = getTimeString;
/**
* @desc: 获取指定时间距离现在的时间描述.
* 例如, 昨天, 1小时前等.
* @param time: ms. 小于当前时间, 大于当前时间将显示为 '刚刚';
* @param strFmt: 需要显示的文字.
* 默认为 {
* now: '刚刚', // 3秒钟以内将显示此信息.
* second: '秒前',
* minute: '分钟前',
* hour: '小时前',
* day_yesterday: '昨天',
* day: '天前',
* month: '个月前', // 6个月内将显示此信息.
* time: 'yyyy-M-d h:m:s' // 超过6个月将使用此格式格式化时间
* }
* @return: string.
*/
exports.getTimeStringFromNow = function(time, strFmt)
{
strFmt = strFmt || {};
strFmt.now = strFmt.now || '刚刚';
strFmt.second = strFmt.second || '秒前';
strFmt.minute = strFmt.minute || '分钟前';
strFmt.hour = strFmt.hour || '小时前';
strFmt.day_yesterday = strFmt.day_yesterday || '昨天';
strFmt.day = strFmt.day || '天前';
strFmt.month = strFmt.month || '个月前';
strFmt.time = strFmt.time || 'yyyy-M-d h:m:s';
var now = Math.ceil(Date.now()/1000);
time = Math.ceil(time/1000);
if (now > time)
{
var s = now - time;
if (s < 3) {
return strFmt.now;
}
if (s < 60) {
return s.toString()+strFmt.second;
}
if (s < 60*60) {
return Math.ceil(s/60).toString()+strFmt.minute;
}
if (s < 60*60*24) {
return Math.ceil(s/60/60).toString()+strFmt.hour;
}
if (s < 60*60*24*30) {
var dNow = new Date(now*1000);
dNow.setHours(0, 0, 1);
if (dNow.getTime()-time <= 60*60*24) {
return strFmt.day_yesterday;
}
return Math.ceil(s/60/60/24).toString()+strFmt.day;
}
if (s < 60*60*24*30*6) {
return Math.ceil(s/60/60/24/30).toString()+strFmt.month;
}
return getTimeString(time, strFmt.time);
}
return strFmt.now;
}
/**
* @desc: 通过字符串获取date. getTime('2012-05-09 11:10:12')
* @param strTime: 时间字符串. '2012-05-09 11:10:12'
* @return: Date.
*/
exports.getTime = function(strTime) {
var date = new Date();
date.setFullYear(
parseInt(strTime.substr(0, 4)),
parseInt(strTime.substr(5, 2), 10)-1,
parseInt(strTime.substr(8, 2)));
date.setHours(
parseInt(strTime.substr(11, 2))||0,
parseInt(strTime.substr(14, 2))||0,
parseInt(strTime.substr(17, 2))||0,
0);
return date;
}
/**
* @desc: 通过时间获取date. getTime2('20120509111012')
* @param strTime: 时间字符串. '20120509111012'
* @return: Date.
*/
exports.getTime2 = function(strTime) {
var date = new Date();
date.setFullYear(
parseInt(strTime.substr(0, 4)),
parseInt(strTime.substr(4, 2), 10)-1,
parseInt(strTime.substr(6, 2)));
date.setHours(
parseInt(strTime.substr(8, 2))||0,
parseInt(strTime.substr(10, 2))||0,
parseInt(strTime.substr(12, 2))||0,
0);
return date;
}
/**
* @desc: getDate('2012-05-09')
* @return: Date.
*/
exports.getDate = function(strDate) {
var date = new Date(
parseInt(strDate.substr(0, 4)),
parseInt(strDate.substr(5, 2), 10)-1,
parseInt(strDate.substr(8, 2)));
return date;
}
/**
* @desc: getDate2('20120509')
* @return: Date.
*/
exports.getDate2 = function(strDate) {
var date = new Date(
parseInt(strDate.substr(0, 4)),
parseInt(strDate.substr(4, 2), 10)-1,
parseInt(strDate.substr(6, 2)));
return date;
}
/**
* @desc: 获取时间的协调世界时间 string.
* @param time: ms. (本地时间)
* @param fmt: 格式化, 默认为 'HH:mm:ss'
* 年(y)、月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
* 'yyyy-MM-dd hh:mm:ss.S' ==> 2006-07-02 08:09:04.423
* 'yyyy-MM-dd E HH:mm:ss' ==> 2009-03-10 星期二 20:09:04
* 'yyyy-M-d h:m:s.S' ==> 2006-7-2 8:9:4.18
* @param weekFmt: 星期的文字格式, 默认为 {'0':'星期天', '1': '星期一', ..., '6':'星期六'}
* @return: string.
*/
exports.getUTCTimeString = function(time, fmt, weekFmt)
{
if (typeof time !== "number")
return "";
fmt = fmt || 'HH:mm:ss';
var t = new Date(time);
var o = {
"M+" : t.getUTCMonth()+1, //月份
"d+" : t.getUTCDate(), //日
"h+" : t.getUTCHours()%12 == 0 ? 12 : t.getUTCHours()%12, //小时
"H+" : t.getUTCHours(), //小时
"m+" : t.getUTCMinutes(), //分
"s+" : t.getUTCSeconds(), //秒
"q+" : Math.floor((t.getUTCMonth()+3)/3), //季度
"S" : t.getUTCMilliseconds() //毫秒
};
var week = weekFmt || {
"0" : "星期天",
"1" : "星期一",
"2" : "星期二",
"3" : "星期三",
"4" : "星期四",
"5" : "星期五",
"6" : "星期六",
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, (t.getUTCFullYear()+"").substr(4 - RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, week[t.getUTCDay()+""]);
}
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;
}
/**
* @desc: 通过世界时间获取date. getDateFromUTC('2012-05-09')
* @param strDateUTC: 世界日期字符串. '2012-05-09'
* @return: Date.
*/
exports.getDateFromUTC = function(strDateUTC) {
var date = new Date();
date.setUTCFullYear(
parseInt(strDateUTC.substr(0, 4)),
parseInt(strDateUTC.substr(5, 2), 10)-1,
parseInt(strDateUTC.substr(8, 2)));
date.setUTCHours(0, 0, 0, 0);
return date;
}
/**
* @desc: 通过世界时间获取date. getDate2FromUTC('20120509')
* @param strDateUTC: 世界日期字符串. '20120509'
* @return: Date.
*/
exports.getDate2FromUTC = function(strDateUTC) {
var date = new Date();
date.setUTCFullYear(
parseInt(strDateUTC.substr(0, 4)),
parseInt(strDateUTC.substr(4, 2), 10)-1,
parseInt(strDateUTC.substr(6, 2)));
date.setUTCHours(0, 0, 0, 0);
return date;
}
/**
* @desc: 通过世界时间获取date. getTimeFromUTC('2012-05-09 11:10:12')
* @param strTimeUTC: 世界时间字符串. '2012-05-09 11:10:12'
* @return: Date.
*/
exports.getTimeFromUTC = function(strTimeUTC) {
var date = new Date();
date.setUTCFullYear(
parseInt(strTimeUTC.substr(0, 4)),
parseInt(strTimeUTC.substr(5, 2), 10)-1,
parseInt(strTimeUTC.substr(8, 2)));
date.setUTCHours(
parseInt(strTimeUTC.substr(11, 2))||0,
parseInt(strTimeUTC.substr(14, 2))||0,
parseInt(strTimeUTC.substr(17, 2))||0,
0);
return date;
}
/**
* @desc: 通过世界时间获取date. getTime2FromUTC('20120509111012')
* @param strTimeUTC: 世界日期字符串. '20120509111012'
* @return: Date.
*/
exports.getTime2FromUTC = function(strTimeUTC) {
var date = new Date();
date.setUTCFullYear(
parseInt(strTimeUTC.substr(0, 4)),
parseInt(strTimeUTC.substr(4, 2), 10)-1,
parseInt(strTimeUTC.substr(6, 2)));
date.setUTCHours(
parseInt(strTimeUTC.substr(8, 2))||0,
parseInt(strTimeUTC.substr(10, 2))||0,
parseInt(strTimeUTC.substr(12, 2))||0,
0);
return date;
}