javascript - 为什么 JavaScript 会错误地解析数据?
问题描述
有两件奇怪的事:
- 第 30 天而不是第 31 天?
它将 13 设置为时间而不是 00?
new Date('Dec 31, 2019').toISOString() // '2019-12-30T13:00:00.000Z'
基本上我要做的是将原始数据格式转换为YYYY-MM-DD
.
解决方案
new Date('Dec 31, 2019')
- 此日期将以您的本地时间格式显示。
例如:
`Tue Dec 31 2019 00:00:00 GMT+1100` (Your Standard Time)
但是,new Date('Dec 31, 2019').toISOString()
- 此日期将显示为
2019-12-30T13:00:00.000Z
. 这意味着 2019 年 12 月 31 日减去 11 小时(您的时区)。
另外,为了避免奇怪的行为,尽量明确地设置年、月、日,以避免奇怪的行为。
Date
您应该按以下格式解析:
// yyyy-mm-dd format
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
let yourDate = new Date(parts[0], parts[1]-1, parts[2]); // Be careful: months are 0-based
推荐阅读
- azure - 查看实时数据的最低权限 - Azure Kubernetes
- r - 使用 R 计算重复组合
- svn - Subversion / SVN:我可以导入本地存储库/目录吗?
- kubernetes - 如何在没有 certmanager 的情况下使用 Gitlab Helm 图表并使注册表也可以工作
- python - 禁用调试时,静态文件未在 Django 2.2 中呈现
- docker - Docker Compose extra_hosts 从 env_file 而不是默认的 .env 文件
- c++ - qml 中的连接 qml 拨号和滑块
- javascript - 伊斯坦布尔:自动忽略 __DEV__ else 分支以进行覆盖
- css - 将 CSS 变量分配给匹配属性选择器的类
- python - 如何使用python从json返回算术表达式的结果?