资讯专栏INFORMATION COLUMN

常见的javascript日期和时间戳互相转化

morgan / 1431人阅读

摘要:写在前面前两天写了一篇常见的获取时间戳,今天来一篇续集吧,日期和时间戳的互转预备知识知道什么是时间戳即距离年月日时分秒的毫秒数如果你要用到的是秒,那也行,单位问题而已。同样的道理要会把时间戳转化成我们想要的日期格式。

写在前面

前两天写了一篇《常见的Javascript获取时间戳》,今天来一篇续集吧,日期和时间戳的互转

预备知识

知道什么是时间戳:即距离1970年01月01日00时00分00秒的毫秒数(如果你要用到的是秒,那也行,单位问题而已)。

知道为什么需要把日期转化成时间戳:对于前端来说,接触的到的时间多是2018-08-08这种形式的,但是在拉取后端数据时,一般要把时间转化成时间戳再传过去。同样的道理要会把时间戳转化成我们想要的日期格式。

时间 -> 时间戳 (2018/08/09 10:10:10 -> 1533780610000 )

通常我们用到的时间格式分两种2018/08/09 10:10:10或者2018-08-09 10:10:10,幸运的是js的Date对象很好的支持了这种格式的时间,通常我们可以通过

new Date("2018/08/09 10:10:10").getTime()或者
new Date("2018-08-09 10:10:10").getTime()来获取到时间戳

但是!!!!
ie对于第二种不支持
如下图:

因此,请采用以下的代码

let time = "2018-08-09 10:10:10"
time = time.replace(/-/g, "/") // 把所有-转化成/
let timestamp = new Date(time).getTime()  

时间戳 -> 时间 (1533780610000 -> 2018/08/09 10:10:10)

这里要用到Date对象的一系列get方法,思路是先根据时间戳new一个Date对象,然后通过一系列get方法分别拿到年月日时分秒,再拼接字符串。

function timestampToTime (timestamp) {
    const dateObj = new Date(+timestamp) // ps, 必须是数字类型,不能是字符串, +运算符把字符串转化为数字,更兼容
    const year = dateObj.getFullYear() // 获取年,
    const month = dateObj.getMonth() + 1 // 获取月,必须要加1,因为月份是从0开始计算的
    const date = dateObj.getDate() // 获取日,记得区分getDay()方法是获取星期几的。
    const hours = pad(dateObj.getHours())  // 获取时, pad函数用来补0
    const minutes =  pad(dateObj.getMinutes()) // 获取分
    const seconds =  pad(dateObj.getSeconds()) // 获取秒
    return year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds
}

function pad(str) {
    return +str >= 10 ? str : "0" + str
}

timestampToTime(1533773345000)
timestampToTime(1533780610000)


总结

有几个小点需要注意

为了兼容,将横线换成斜杠(2018-08-09 10:10:10 => 2018/08/09 10:10:10)

获取月份时,要加1

getDate获取日期,getDay是用来获取是一个星期的第几天

根据需求做适当的补0,2018-8-9 08:09:05 要比 2018-8-9 8:9:5好看的多。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110161.html

相关文章

  • Java 时间日期处理

    摘要:时间与日期处理从属于笔者的现代开发系列文章,涉及到的引用资料声明在学习与实践资料索引中。可以通过静态构造方法很容易的创建,定义了与之间的转化关系时差类以年月日来表示日期差,而以秒与毫秒来表示时间差适用于处理与机器时间。 Java 时间与日期处理 从属于笔者的现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中。 Java 时间与日期处理 在 Java 8...

    HelKyle 评论0 收藏0
  • php 学习笔记之日期时间操作一箩筐

    摘要:格式化日期时间格式化日期时间场景将当前日期时间或者特定日期时间格式化输出为特定格式的字符串常用于人性化展示信息说明返回给定时间戳格式化后所产生的日期时间字符串如果没有给出时间戳则默认使用本地当前时间备注格式说明返回值示例位数字完整表示的年份 showImg(https://segmentfault.com/img/remote/1460000019351405); 格式化日期时间 d...

    tain335 评论0 收藏0
  • Date日期转换

    摘要:传入的格式要求详见日期格式打印结果作为构造函数作为构造函数可以通过指针实例化一个的实例对象,这个对象是一个日期对象。所有实例的属性和方法即是继承于构造函数原型上的属性和方法。 前言 之前写博客都是在github的搭建的个人博客上,最近开始迁移博客上的内容到segmentfalut。一方面是想重新整理下写过的博客。另一方面也是想与大家多多交流,找到现阶段自己的不足。第一篇文章是关于Dat...

    djfml 评论0 收藏0
  • 20 个案例教你在 Java 8 中如何处理日期时间?

    摘要:前言前面一篇文章写了如何安全的使用里面介绍了如何处理日期时间,以及如何保证线程安全,及其介绍了在中的处理时间日期默认就线程安全的类。引入了全新的日期时间格式工具,线程安全而且使用方便。 前言 前面一篇文章写了《SimpleDateFormat 如何安全的使用?》, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Java 8 中的处...

    Rango 评论0 收藏0
  • 【JS基础】类型转换知多少

    摘要:正确的解释是允许在相等比较中进行强制类型转换,而不允许。参考资料小议下字符串比较大小中的强制类型转换核心概念类型转换对象和方法隐式类型转换小结 开胃菜 先说一个题外话,我在工作中遇到一个问题,需要比较 08:00 和 09:00 的大小,最后我找到三种方法: 在两个字符串前后各拼接相同的年月日和秒,拼成完整的时间格式进行比较: var head = 2016-01-01 var fo...

    AdolphLWQ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<