js new Date 创建时间默认是8点
起因
最近在写一个页面,需要用到时间控制。然后我通过new Date()
传入日期字符串创建了一个对象,并与当前时间做时间戳比较,结果12点刚过,就出问题了。举个栗子:
// 假设当前时间是2019年12月22日0点20分
new Date('2019-12-22').getTime() < new Date().getTime()
// 上面的结果是什么?正常来说应该是true吧,但不好意思啊,返回了false
百思不得其解,当时因为情况紧急,查出了上面的创建时间返回的内容并不是0点,而是8点
所以就强行在时间字符串上拼接了时间:new Date('2019-12-22 00:00:00').getTime()
, 强行解决了这个问题。
然后又碰到了在IOS上不识别中横线分割的时间字符串问题,讲中横线转成了反斜杠。
当时临时解决问题后的字符串大概长这样:
new Date('2019/12/22 00:00:00').getTime() < new Date().getTime()
临时解决问题。现在闲来无事,可以看看这个问题究竟是什么鬼?
尝试
传入不同的字符串格式,看看结果,我只尝试了最常使用的两种格式
惊讶的发现,-
分割的字符串,被默认解析到了8点,而/
分割的字符串,默认解析到了0点。这么说来,我之前有点多次一举了,直接讲-
替换成/
就可以了啊。
探究
那么为什么默认是8点呢?有没有觉得8这个数字很值得关注,我们所在的时区是东八区,如果以GMT标准0点来算的话,在那个时间点,这里就是8点啊。
那我就可以这样理解了,创建时间时,它默认时间确实是0点,但是是以GMT为基准的,所以将其转换成本地时间就是8点。而/
分割的字符串在创建时,则是以本地时区为基准。
那么为什么js会对不同分割的时间字符串进行不同处理呢?貌似是因为-
分隔且具有前导0的日期字符串,会被解析成ISO格式的字符串,以GMT时区为基准,不过我也没看懂。
解决
最终,既然-
分割的字符串会出问题,那我就讲所有的-
都换成/
就好了,正好也可以借此解决IOS的兼容问题。动手解决:
/*** 将时间字符串转换成date对象* @param dateStr* 时间字符串*/
function getDate(dateStr){/* 若日期是使用-分割的,全部转换成/因为只有日期时,js会将-分割的字符串基准时区设置为GMT,与当前时区相差8小时 */dateStr = dateStr.replace(/-/g, '/');return new Date(dateStr);
}
js new Date 创建时间默认是8点相关推荐
- mysql默认时间怎么不同步_MYSQL 更新时间自动同步与创建时间默认值共存问题
本文作者:苏生米沿 在使用SQL的时候,希望在更新数据的时候自动填充更新时间,那么在mysql中是如何实现的呢? 如创建表users CREATE TABLE RS_SIGNUPUSER ( ID V ...
- js new Date() 当前时间/指定时间转换为时间戳
获取当前时间/指定时间时间戳(毫秒值) // 方式一 Date.now(); // 1606381881650(打印时的时间戳) // 方式二 new Date() - 0; // 160638188 ...
- java的date时间比较_java Date型时间比较大小
方式一: 两个Date类型的变量可以通过compareTo方法来比较.此方法的描述是这样的:如果参数 Date 等于此 Date,则返回值 0:如果此 Date 在 Date 参数之前,则返回小于 0 ...
- 【js Date】时间字符串、时间戳转换成今天,明天,本月等文字日期
作为前端开发攻城师,难免对时间进行各种计算和格式转换,一个js的Date对象统统可以搞定. 下例是将一个具体的时间转换成今天.明天.几天之内.本月等文字描述的日期的工具函数,也可以基于它扩展,多应用于 ...
- js取服务器系统时间,JS中new Date()用法及获取服务器时间
1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...
- java poi 设置时间空间_java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式?...
java - POI - 如何将单元格值设置为Date并应用默认的Excel日期格式? 我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件. 现在我有了一个新的要求,即 ...
- java 创建 时间_java创建Date日期时间笔记
(1)public Date() 创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间. 例: Java代码 1.Date today=new Date(); //today被设置成创建时刻相 ...
- mysql添加时间默认值_mysql 创建时间字段添加默认值
在创建时间字段的时候 例如:字段 create_time 默认值可以设置为CURRENT_TIMESTAMP插入数据时候会自动添加时间,默认值为当前时间 update_time 默认值可以设置 ...
- JS基础--Date.parse(),Date.UTC()和Date.now()
一. UTC和GMT的关系 什么是GMT? 格林尼治标准时间(Greenwich Mean Time,GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线. 理 ...
最新文章
- 给图像特征提取开个“ViP”是什么效果?字节牛津提出视觉解析器,全面超越HaloNet!...
- ccombox获取选择的文本_PC端最好用的翻译软件,支持引擎切换、文本朗读
- static在内存层面的作用_虚拟地址空间--用户进程看到的自己所占用的内存
- C# 系统应用之鼠标模拟技术及自动操作鼠标
- 【机器学习】XGBoost学习笔记
- springmvc学习(一)
- 使用Qt Creator 2.60编写C/C++程序
- python 灰色系统预测GM
- 求1+2+3+.....+n
- python搜索关键词自动提交_简单爬虫:调用百度接口,实现关键词搜索(python_003)...
- swoole2.0与java_swoole2.0试用说明
- 关于python装饰器的总结
- 2019年5月,国际计量单位实施新定义
- 计算字符串的相似度-两种解法
- 智能电子秤全国产化电子元件推荐方案
- Git基础(18):如何使用GitLab
- linux内存中的文件权限,Linux系统管理(用户权限、磁盘存储、文件系统、内存、进程)...
- 2013,我的创业记忆片段
- 关于技术部管理的一些思考
- Attention机制介绍(原理+代码)
热门文章
- 现代软件工程讲义 2 开发技术 - 效能分析
- probe request帧结构_WLAN 无线网络 09 - 管理帧
- IOC操作Bean管理XML方式(外部属性文件)
- IOC容器(底层原理解读)
- python语言例子_【Python】SimPy的使用示例-Go语言中文社区
- code blocks c语言,Code Blocks安装与使用图文教程(使用Code::Blocks编写C语言程序)...
- php 共享内存列队,php中对共享内存,消息队列的操作
- vs传值接收页面怎么直接打开_VS2003传值
- 审计工作存在的难点和问题_电力工程造价审计的难点与对策有哪些?学习安装电力造价广联达计价看这里!!...
- html代码里面换图片不显示不出来了,微擎 Ueditor 百度编辑器 替换图片不显示问题...