JS时间戳转换为正常时间时怎么只保留日期不要时间?

发布于 2022-09-01 12:54:43 字数 208 浏览 19 评论 0

var time=new Date(parseInt(1420184730) * 1000).toLocaleString();

这样的转换出来的时间戳一般都会有具体时间跟在后面的。如果我只想要前面的日期,后面的时间都不要,用过.substr(0,11),但这个方法太死了,不能灵活的去截取。请问有没有更加好的实现方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

烂柯人 2022-09-08 12:54:43

Date对象有toLocaleDateString方法可以只返回日期啊,这样不行么:

var time=new Date(parseInt(1420184730) * 1000).toLocaleDateString()
回心转意 2022-09-08 12:54:43

所以你想要的是灵活的,而不是固定格式的是吧?那下面这个非常灵活,只要在使用.format方法前注册好下面的方法就可以用了

用法:

var time=new Date(parseInt(1420184730) * 1000).format('yyyy年M月d日');
console.log(time);//输出:"2015年1月2日"

用之前记得先注册:

/**
 * 对Date的扩展,将 Date 转化为指定格式的String
 * 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * 例子:
 * (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
 * @param fmt string
 * @return string
 * */
Date.prototype.format = function(fmt){ //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    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;
}
追我者格杀勿论 2022-09-08 12:54:43
javascripttime.split(',')[0]; // 2015/1/2 may differ with different system language

or

var date = new Date(parseInt(1420184730) * 1000);
[date.getFullYear(), date.getMonth()+1, date.getDate()].join('/'); // 2015/1/2

or

new Intl.DateTimeFormat('zh-cn').format(date); // 2015/1/2
薄凉少年不暖心 2022-09-08 12:54:43

参照这个文档,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Glob...
我发现toLocalString方法返回的字符串格式规律不是那么明显。
如果题主的场景是一般2015/1/2这种格式的,我觉得可以用正则表达式:

var time=new Date(parseInt(1420184730) * 1000).toLocaleString();
var matches = time.match(/^[^\s]*/);
console.log(matches[0]); // 2015/1/2

如果是其他格式的就。。。,我觉得最保险的做法是@bf同学提出的第二种做法。

用心笑 2022-09-08 12:54:43

new Date(parseInt(1420184730) * 1000).toJSON().slice(0,10)//2015-01-02

难得心□动 2022-09-08 12:54:43

new Date(parseInt(1420184730) * 1000).toISOString().slice(0,10);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文