资讯专栏INFORMATION COLUMN

日期时间的转换

everfly / 2290人阅读

摘要:因此,思路是,先将字符串日期转换成时间对象,再利用的方法进行时间的加减,改变后,我们再将对象转换成字符串日期即可。

时间戳是什么

时间戳是指自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
目前大部分情况下为13位,但有的时候服务器会省略存储10位,即存储的是秒数,因为日常使用不需要那么精确到秒。

关于Date函数

Date这里先不赘述,可自行阅读文档。

我们现在只需要知道,向Date里传入时间戳,我们会得到一个时间对象

var time = new Date(1453094034000); 


这个时间对象依旧不是我们想要的时间格式,就需要我们自行对其进行转换。

因此我们可以使用Date 的方法去获取我们想要的年月日时分秒的数据,来自行组装成我们想要的时间格式。

时间戳转换为日期

ok,我们现在尝试将服务器接收的1453094034000转换为2016-1-18 13:13:54。

明显看出我们需要从时间对象中获取年,月,日,时,分,秒。分别对应Date的以下方法。

date.getFullYear();
date.getMonth();
date.getDate();
date.getHours();
date.getMinutes();
date.getSeconds();

因此,代码如下

var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear() + "-";
var M = (date.getMonth()+1 < 10 ? "0"+(date.getMonth()+1) : date.getMonth()+1) + "-";
var D = date.getDate() + " ";
var h = date.getHours() + ":";
var m = date.getMinutes() + ":";
var s = date.getSeconds();
return Y+M+D+h+m+s;
日期转换为时间戳

Date对象给我们提供了一些方法让我们直接将日期转换为时间对象,然后转为时间戳。就不需要我们自己手动去计算日期到底距离那个标准时间多少秒了。

不过,首先需要明白的是,Date目前只识别以下几种类型的字符串或者数字的时间表达方式。我们在上一节所转化的字符串2016-1-18 13:13:54是可以识别的

方法如下

var t =  new Date("2016-1-18 13:13:54");
return t.getTime();
字符串日期的加减

这里扩展一下经常遇到的情况,即日期的加减。

当然Date也有日期的增减方法方法。

因此,思路是,先将字符串日期转换成时间对象,再利用Date的方法进行时间的加减,改变后,我们再将对象转换成字符串日期即可。

字符串日期转换为时间对象

注意,在时间对象的月份存储中,是以0-11来对应1-12月的,因此,需要注意转换

        var str = "2019-2-1"; // 初始日期
        var date = new Date();

        var initdate = str.split("-");
        date.setFullYear(parseInt(initdate[0]));
        date.setMonth(parseInt(initdate[1]) - 1);
        date.setDate(parseInt(initdate[2]));
时间对象变动后再转为字符串
var num = 10;
date.setMonth(date.getMonth() + num);
console.log(date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate());

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

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

相关文章

  • 日期时间戳之间相互转换

    摘要:中国标准时间将转换后的标准日期转换为时间戳。中国标准时间中国标准时间中国标准时间不设定时分秒,则默认转换为一般情况下可以转换以等分隔的日期形式,但是在中会出现不兼容的问题将所有的转为即可 分类一:将日期转换为时间戳 要将日期转换为时间戳,首先得先获取到日期,这里可以直接指定日期,或者是使用当前日期。要获取当前日期,我们可以使用new Date()来获取: (1)、将当前日期转换为时间戳...

    monw3c 评论0 收藏0
  • Date对象常用封装方法及遇到

    摘要:使用中的对象已经很久了但是一直以来都没有将常用的封装函数和遇到的坑记录下来趁着今天有空就记录下来方便自己下次直接使用并提醒自己遇到过那些坑。利用设置日期时从设置当设置为时即上个月的最后一天参考 使用JS中的Date对象已经很久了,但是一直以来都没有将常用的封装函数和遇到的坑记录下来,趁着今天有空,就记录下来,方便自己下次直接使用,并提醒自己遇到过那些坑。如果有哪些地方不对,希望大家能够...

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

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

    djfml 评论0 收藏0
  • 日期居然用字符串保存?我笑了

    摘要:微信公众号后端进阶,专注后端技术分享框架分布式中间件服务治理等等。 微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! 我发现数据库有些日期居然用字符串保存?于是跟几个小伙伴讨论了关于数据库的日期应该要怎么保存的问题,其实我一直都建议直接用数值保存时间戳,为什么我要这么建议呢?...

    Leck1e 评论0 收藏0
  • PHP转换超过2038年日期出错问题解决

    摘要:一步步的排查,最终锁定问题是由于函数返回了一个值,导致数据插入数据库失败。漏洞导致上述问题的根本原因就是漏洞,也被称为。超过这个时间后,整型数值将会溢出。或者使用函数将一个大于时间戳转换为日期。解决方案方案一更换系统和均为位。 最近在写一个项目接口。测试中发现服务器上测试正常的功能,在本地一直有问题。一步步的排查,最终锁定问题是由于函数strtotime返回了一个false值,导致数据...

    wapeyang 评论0 收藏0

发表评论

0条评论

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