格式化后端传过来的时间戳

首先我们先来说一下,为什么后端返回的是时间戳,而不直接返回一个具体的时间给我们:因为时间的格式有很多种,不同的页面可能对不同的时间显示需求不同。比如05-8-8 上午9:17 2005-8-8 9:17:42 2005年8月8日 上午09时17分42秒2005年8月8日 09时17分42秒 GMT+08:00传字符串的话前端怎么知道你传的是哪种格式的,他没办法解析你的字符串。不如直接传时间戳再由前端转化成他想要的格式。至于前端传给后台,其实正常来说也应该传时间戳的,只是你传字符串也被Springmvc转化成Date格式了的,要是你直接用Servlet来写,传的字符串肯定是不会被转化成Date的。
所以,后端给前端页面返回时间戳是为好让前端页面更灵活的展示时间。

定义:Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。

//时间格式化
export function dateFormat(fmt, date) {
    let ret;
    const opt = {
        "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()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

使用方法,假如后端传过来一个时间戳: time = 1514345477;

//1、首先将时间戳转换成 date时间对象
let date = new(time*1000); 
此时打印 date 就是中国标准时间: Wed Dec 27 2017 11:31:17 GMT+0800 (中国标准时间)
//因为时间戳是以秒计算的,date时间是以毫秒计算的,所以这里要乘以1000

//2、dateFormat(‘yy-MM-dd hh:mm:ss’,date)

然后最后打印的就是:2017-12-27 11:31:17 这样的时间格式

发布了28 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43353619/article/details/104561768
今日推荐