前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日期格式化 YYYY-MM-DD 出现时间偏移量

日期格式化 YYYY-MM-DD 出现时间偏移量

作者头像
HoneyMoose
发布于 2022-12-03 01:09:18
发布于 2022-12-03 01:09:18
1.3K00
代码可运行
举报
文章被收录于专栏:CWIKIUSCWIKIUS
运行总次数:0
代码可运行

在js中,很多时候需要把日期字符串转换为一个 Date 对象。

如果得到的日期字符串有时间还好办,如果没有时间,只有日期的格式,例如 2022-12-01 这样的字符串呢?

大部分人可能什么都没想,直接就调用了 new Date(datestring)。可是事情没有想象中那么简单。

发现了问题了吗?获得日期时间被减去了 5 个小时。

这是因为我们的浏览器在美国东部时间。

在 MDN 中,有一个下面的注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Note: When parsing date strings with the Date constructor (and Date.parse, they are equivalent), always make sure that the input conforms to the ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ) — the parsing behavior with other formats is implementation-defined and may not work across all browsers. Support for RFC 2822 format strings is by convention only. A library can help if many different formats are to be accommodated.

Date-only strings (e.g. "1970-01-01") are treated as UTC, while date-time strings (e.g. "1970-01-01T12:00") are treated as local. You are therefore also advised to make sure the input format is consistent between the two types.

不要忽略掉上面的这个注释。

用人话解释一下就是,如果直接给 new Date 传入’YYYY-MM-DD’ 这样的字符串作为参数的话,得到的 Date 对象是一个基于 UTC 的对象实例。

如上面的代码实例中,

const date2 = new Date('2022-12-01')

date2 在进行实例化的时候,得到的是 2022-12-01 00:00:00 GMT+00:00 这样的时间,再被转换美国的东部时区的时候,就少了 5 个小时。

问题解决

要解决这个问题,其实就使用了 moment 来对日期进行格式化就可以了。

moment('2022-12-01').toDate();

使用上面的代码,就可以避免在 new Date() 进行日期格式化的时候因为时区的问题导致的时间便宜。

这个便宜有可能会导致多一天或者少一天的情况。

处理日期,还是尽量使用 moment 库吧。

https://www.ossez.com/t/yyyy-mm-dd/14233

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端中的时间
这涉及到时间字符串格式的两个标准。前者4/29/2019是RFC2822格式,后者是ISO 8601格式。
LIYI
2019/09/02
2.1K0
mysql日期格式化 yyyymmdd_mysql中时间日期格式化
这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:
全栈程序员站长
2022/09/02
5.8K0
日期与日期格式化
**注意:**要想得到当前时间的long date 我们可以用getTime();方法
星哥玩云
2022/09/14
4.1K0
日期与日期格式化
SpringMVC日期格式化
在com.fasterxml.jackson.databind.ObjectMapper设置相应属性
全栈程序员站长
2022/09/06
4K0
json日期格式化与json日期转化为对象
参考:https://blog.csdn.net/qq_28929589/article/details/79245774
CBeann
2023/12/25
6290
json日期格式化与json日期转化为对象
java 怎么把日期格式化时间_如何实现java日期格式化?
使用LocalDateTime#parse()(或ZonedDateTime#parse()如果字符串恰巧包含时区部分)将String特定模式中的解析为LocalDateTime。
全栈程序员站长
2022/07/23
2.5K0
JavaScript日期格式化及解析
JavaScript开发经常需要对日期进行转换,把日期转成字符串或者从字符串生成日期。JavaScript日期对象内置了简单的日期格式化方法toString()和日期解析方法Date.parse(),这两个方法有较大的局限性,不能自定义自定义日期格式化和解析的字符串格式。下面列出一些常用的日期处理JS库。
全栈程序员站长
2022/09/01
1.9K0
日期格式转换
没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!
栖西
2023/10/17
7750
日期格式转换
Java SimpleDateFormat进行日期格式化
众所周知,Java中的日期类是Date,然后日期默认的输出样式很奇怪哦,是这样子的:
全栈程序员站长
2022/07/22
6740
Java SimpleDateFormat进行日期格式化
Java 编程问题:三、使用日期和时间
本章包括 20 个涉及日期和时间的问题。这些问题通过Date、Calendar、LocalDate、LocalTime、LocalDateTime、ZoneDateTime、OffsetDateTime、OffsetTime、Instant等涵盖了广泛的主题(转换、格式化、加减、定义时段/持续时间、计算等)。到本章结束时,您将在确定日期和时间方面没有问题,同时符合您的应用的需要。本章介绍的基本问题将非常有助于了解日期-时间 API 的整体情况,并将像拼图中需要拼凑起来的部分一样解决涉及日期和时间的复杂挑战。
ApacheCN_飞龙
2022/07/11
5.7K0
python时间日期格式化和反格式化
date,datetime和time对象都支持一种 strftime(format)方法,以创建一个表示显式格式字符串控制下的时间的字符串。从广义上讲, 尽管不是所有对象都支持一种方法,但它的d.strftime(fmt) 行为类似于time模块。time.strftime(fmt, d.timetuple())timetuple()
sunsky
2020/08/19
2.4K0
Java基础(十七):日期时间API
第三次引入的API是成功的,并且Java 8中引入的java.time API 已经纠正了过去的缺陷,将来很长一段时间内它都会为我们服务
Java微观世界
2025/01/21
2020
Java基础(十七):日期时间API
【Hive】Hive 的内置函数
这篇文章主要介绍 Hive 的一些内置函数,其目的在于了解和知道大概有哪些内置函数,以及我们能够做哪些操作。
阿泽 Crz
2020/07/20
1.7K0
学习PHP中的国际化日期格式化操作
对于国际化功能来说,日期相关的格式化操作也是一块重头戏,毕竟不同的时区,不同的国家对于日期的表示方式都会有些不同。今天我们主要来学习的就是国际化地表示日期相关的信息内容。
硬核项目经理
2021/08/06
1.9K0
超全!Python 处理日期与时间的全面总结!
https://www.biaodianfu.com/python-datetime.html
小F
2021/10/08
2.8K0
Java日期问题汇总
通常格式化日期时,都是使用的YYYY/MM/dd来格式化日期,但是在遇到跨年日期时,就会遇到很神奇的现象,如下:
雨临Lewis
2022/01/12
1.5K0
java实现时间转UTC格式
协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps
用户7741497
2022/03/27
4.6K0
【mysql】日期与时间类型
YEAR类型用来表示年份,在所有的日期时间类型中所占用的存储空间最小,只需要1个字节的存储空间。
兮动人
2022/03/12
4.5K0
Oracle函数 – 日期函数详解
SYSDATE:取得当前的日期和时间,类型是DATE.它没有参数.但在分布式SQL语句中使用时,SYSDATE返回本地数据库的日期和时间.
星哥玩云
2022/08/17
7.6K0
Oracle函数 – 日期函数详解
mysql 关于时间类型的刨坑之路
前两天有做一个基于binglog的数据库实时同步,一张老数据表里有DATETIME、TIMESTAMP不同的时间字段类型,看起来值都是一样的,并且默认值都设置的 0000-00-00 00:00:00,导致我这边读取binlog更新数据库直接悲剧。
用户2825413
2019/07/16
1.7K0
mysql 关于时间类型的刨坑之路
相关推荐
前端中的时间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验