JavaScript 日期对象之时间类型转换

617 阅读3分钟

码农的日常工作中时常要进行各种时间格式之间的转化,我是一只菜鸟,就将每日学到的东西整理成文档,也算是学习笔记了,以下内容也是看了别人的东西,整理了一下,希望对同样是新手的朋友有所帮助~

1.如何获取时间对象d

我们通过new Date()来实例化一个日期对象 有4种方式:

let d = new Date();//获取当前最新的日期对象
let d = new Date(milliseconds);//传入毫秒时间戳获取对应的日期对象
let d = new Date(dateString);//传入标准格式的时间字符串获取对应的日期对象 如:2022/12/25 18:02:20:0
let d = new Date(year, month, day, hours, minutes, seconds, milliseconds);//分别传入年月日数据

2.已知日期对象d,如何获取对应的年月日时分秒

let year = d.getFullYear();//获取年
let month = d.getMonth();//获取月(0-11)(从0开始计算,即0代表1月份,依次类推)
let date = d.getDate();//获取日(1-31)
let day = d.getDay();//获取星期几(0-6)(外国的星期可是从星期日开始算的 星期日=0 星期一=1...依次类推)
let hours = d.getHours();//获取时(0-23)
let minutes = d.getMinutes();//获取分钟(0-59)
let seconds = d.getSeconds();//获取秒(0-59)
let milliseconds = d.getMilliseconds();//获取毫秒(0-999)
let timestamp = d.getTime();//获取自 1970 年 1 月 1 日午夜以来与指定日期的毫秒数。

有了这些方法,我们就能应付很多需求了,具体应用场景如下:

a.获取当前时间戳,单位秒

let timestamp = parseInt(new Date().getTime()/1000);//时间戳秒

b.当前时间转换成日期字符串

//定义一个函数方法
function timeToStr(){
    let now = new Date();
    let yy = now.getFullYear();      //年
    let mm = now.getMonth() + 1;     //月
    let dd = now.getDate();          //日
    let hh = now.getHours();         //时
    let ii = now.getMinutes();       //分
    let ss = now.getSeconds();       //秒
    let clock = yy + "-";
    if(mm < 10) clock += "0";
    clock += mm + "-";
    if(dd < 10) clock += "0";
    clock += dd + " ";
    if(hh < 10) clock += "0";
    clock += hh + ":";
    if (ii < 10) clock += '0'; 
    clock += ii + ":";
    if (ss < 10) clock += '0'; 
    clock += ss;
    return clock;     //返回当前日期字符串
}

//调用方法
let timeStr = timeToStr();

c.日期字符串转时间戳

    let d = '2015-03-05 17:59:00.0';//保证标准时间格式的情况下
    d = d.substring(0,19).replace(/-/g,'/');//必须把日期'-'转为'/'
    let timestamp = new Date(d).getTime();//最终的时间戳

d.时间戳转日期字符串

//创建一个方法 传入时间戳 返回日期字符串
//假设传入的是秒时间戳
function timeToStr(timestamp){
    let d = new Date(timestamp * 1000);    //根据时间戳生成的时间对象
    let timeStr =  (d.getFullYear()) + "-" + 
               (d.getMonth() + 1) + "-" +
               (d.getDate()) + " " + 
               (d.getHours()) + ":" + 
               (d.getMinutes()) + ":" + 
               (d.getSeconds());//当然也可以用b中判断月份这些是否小于10来补0
    return timeStr;
}

可以将b和d进行结合,这个给新朋友自己进行尝试把,传入一个时间戳,或者一个日期对象,返回一个日期字符串 在函数体内进行判断,传入的参数是时间戳还是日期对象,或者压根没传来进行后续处理