这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战
Date 类型
Date 类型使用的是自 UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数保存日期。
创建日期对象
var now = new Date(); // 获取当前日期和时间
根据特定的日期和时间创建日期对象,Date.parse()、Date.UTC()
-
Date.parse()接收一个表示日期的字符串参数。参数格式
- “年/月/日”,如 11/29/2021;
- YYYY-MM-DDTHH:mm:ss.sssZ
- ...
var date1 = new Date(Date.parse("11/29/2020"));
var date1 = new Date("11/29/2020");
上面两种方法是等价的。
Date.UTC()也是返回表示日期的毫秒数。参数分别是年份、基于0的月份(1月是0,2月是1)、月中的哪一天、小时数(0-23)、分钟、秒和毫秒数。年和月是必须的。
var date3 = new Date(Date.UTC(2000, 0))
Date.now()返回表示调用这个方法时的日期和时间的毫秒数。
var start = Date.now();
doSomething();
var end = Date.now();
var return = end - start;
继承的方法
Date 类型继承了 toLocaleString()、toString()、valueOf() 方法。
日期格式化的方法
toDateString():以特定于实现的格式显示星期几、月、日和年;toTimeString():以特定于实现的格式显示时、分、秒和时区;toLocaleDateString():以特定于地区的格式显示星期几、月、日和年;toLocaleTimeString():以特定于地区的格式显示时、分、秒和时区;toUTCString():以特定于实现的格式完整的 UTC 日期;
/**
* 日期格式转换
* @param millisecond 毫秒
* @param template 模板:YYYY-mm-dd HH:MM:SS
* @returns
*/
function formatDate(millisecond, template) {
var result = "";
try {
var date = new Date(millisecond);
var option = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString(), // 秒
};
var template = template || "YYYY-mm-dd";
for (var k in option) {
var ret = new RegExp("(" + k + ")").exec(template);
if (ret) {
template = template.replace(ret[1], ret[1].length == 1 ? option[k] : option[k].padStart(ret[1].length, "0"));
}
}
result = template;
} catch (error) {
console.warn("ERROR formatDate", error);
}
return result;
}
console.log(formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS'));
console.log(formatDate(1635817199000));