资讯专栏INFORMATION COLUMN

YYYY-MM-DD与YYYY/MM/DD之错误时间戳

iKcamp / 1772人阅读

摘要:知识延伸中通过对象获取时间戳的常用方法此处本质是调用了方法浏览器环境下是不支持这种格式的

嘿,老周,我在后台设置的这个活动是明天零点开始的,你这个页面上活动开始的倒计时怎么多出了8个小时?

错因

接口返回的活动开始时间是"2019-06-18",前端需将这个日期转化为时间戳来计算当前时间到该日期的倒计时,代码如下:

var timestamp = new Date("2019-06-18").getTime();
console.log(timestamp ); // 1560816000000

但实际上正确的时间戳应该是1560787200000,多出了28800000毫秒即8个小时!
让我们来看看是哪里在作妖:

var date = new Date("2019-06-18");
console.log(date); // Tue Jun 18 2019 08:00:00 GMT+0800 (中国标准时间)

预期的Tue Jun 18 2019 00:00:00 GMT+0800 (中国标准时间)变成了Tue Jun 18 2019 08:00:00 GMT+0800 (中国标准时间)

对策

将时间格式从YYYY-MM-DD转为YYYY/MM/DD:

var dateStr = "2019-06-18";
dateStr = dateStr.replace(new RegExp(/-/gm), "/");
console.log(dateStr); // "2019/06/18"
var date = new Date(dateStr);
console.log(date); // Tue Jun 18 2019 00:00:00 GMT+0800 (中国标准时间)

此时的Date对象的值便符合预期了。

知识延伸

1.JavaScript中通过Date对象获取时间戳的常用方法:

getTime()

valueOf()

var timestamp1 = new Date("2019/06/18").getTime();
var timestamp2 = new Date("2019/06/18").valueOf();
var timestamp3 = +new Date("2019/06/18"); // 此处本质是调用了valueOf()方法
console.log(timestamp1); // 1560787200000
console.log(timestamp2); // 1560787200000
console.log(timestamp3); // 1560787200000

2.safari浏览器环境下是不支持YYYY-MM-DD这种格式的

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

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

相关文章

  • Java - 时间、Date、Calendar、SimpleDateFormat

    摘要:时间戳获取时间戳精确到毫秒级,中精确到秒级,所以获取的时间戳需要除以,就可以保证一致性耗时最多,这是因为要处理时区问题时间戳日期转换自定义日期格式时间戳转换为格式化日期时间对象日期格式年月日控制台打印结果 Java package com.ikoo.demo; import java.text.SimpleDateFormat; import java.util.Calendar;...

    reclay 评论0 收藏0
  • 时间格式化及操作(moment.js篇)

    摘要:在里面全局使用引入使用中文时间其他地方调用的方法获取当前时间返回当前时间时间对象返回当前时间毫秒数返回结果格式化当前时间格式化时间戳以秒为单位格式化时间戳以毫秒为单位原生对象同对象相互转换转换为对象转换为对象当前时间取值操 # moment.js ## 在vue里面全局使用 main.js // 引入moment import moment from moment import mom...

    Forelax 评论0 收藏0
  • Javascript系列Date对象

    摘要:返回对象的月份值。设置对象的秒数值。日期转字符串中国标准时间下午返回客户端当地时间格式中国标准时间下午其他方法返回的毫秒表示返回对象与之间的毫秒值北京时间的时区为东区,起点时间实际为时间实例可互相比较,实际比较的则是毫秒数 创建Date对象 Date 对象会自动把当前日期和时间保存为其初始值。 var myDate = new Date(); //返回当前时间字符串 // Sun J...

    maybe_009 评论0 收藏0
  • js时间日期格式间的互转

    摘要:可以这样做有三种方式获取,在后面会讲到三种方式的区别三种获取的区别第一第二种会精确到毫秒第三种只能精确到秒,毫秒将用来代替比如上面代码输出的结果一眼就能看出区别参数形式有种比如月份从 1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了...

    adam1q84 评论0 收藏0

发表评论

0条评论

iKcamp

|高级讲师

TA的文章

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