javascript - JS:使用 date-fns 解析时间以提取小时和分钟,忽略时区
问题描述
我的后端以以下格式向我发送时间戳:2019-12-15T20:00:00.000Z
这是 UTC 时间。现在我只需要在不修改时区的情况下提取时间。我正在使用date-fns
,但每次我尝试获取时间时,我要么获取时间,要么将Invalid Date
时间修改为本地时区。现在我的代码是:
import { format, parse, parseISO } from 'date-fns'
format(parseISO('2019-12-15T20:00:00.000Z'), 'h:mm a')
我想要的是: 8: 00 PM,但我得到的是3:00 PM,因为它从 UTC 转换为 EST 时间(我的本地时区)。我知道我可以做 IsoString 之类的事情,然后解析字符串,但我正在寻找一种使用 date-fns 的方法,这样我就不必编写自定义字符串解析器了。必须有一种简单的方法来忽略时区吗?
解决方案
我将用如何使它工作来回答我自己的问题,以防它对某人有所帮助,但我仍然想看看是否有更好的选择来代替仅使用 date-fns ,因为我的似乎有点骇人听闻:
我所做的是从 ISO 字符串中删除时区,然后将该时间与 date-fns 一起使用:
let time = "2019-12-15T20:00:00.000Z".slice(0, -5)
上面是一个没有时区的时间,并且因为没有时区 date-fns 假定本地时区,所以当你这样做时:
format(parseISO(time), 'h:mm a')
你得到:8:00 PM,或者你喜欢的任何格式。你只需要小心你正在切片的字符串。如果它总是相同的格式,那么它应该可以工作。
推荐阅读
- algorithm - 对于给定的旅行商问题的特殊情况,下列哪项陈述是正确的?
- wordpress - 特色图片未显示
- c# - SerialPort.DataReceived 在 Windows 服务/会话零中不起作用
- sql - SQL - 将行旋转到列并采用笛卡尔积
- amazon-web-services - AWS 负载均衡器 + NginX + EC2 AutoScaling 组
- import - Hybris - 如何在后台为客户添加导出导入小部件?
- c# - 为什么我不能将字节数据发送到 Android Socket 应用程序,但它在 c# 中效果很好
- java - 放心 - 我不能将一个变量从一种方法传递给另一种方法
- node.js - Express MySQL api 需要帮助返回查询
- pandoc - Pandoc:如何使用 docx 输出将行号添加到代码块