引用类型——Date

169 阅读2分钟

这是我参与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));