javascript - 在 date-fns 库中将 UTC 时间戳字符串转换为人类可读的格式
问题描述
我这里有一个 UTC 字符串。
2021-04-01T21:26:19Z
我想使用PPP
date-fns 中的格式将其转换为人类可读的格式
April 1st, 2021
我该怎么做呢?我似乎无法在 date-fns 中找到将 UTC 字符串转换为不同日期的函数
我的代码如下所示:
import { isValid, format, parse } from 'date-fns'
import { enGB } from 'date-fns/locale'
export const getReadableDate = (utcDate:string | undefined):string => {
if (!utcDate) {
return 'Invalid Date'
}
const parsedDate = parse(utcDate, 'PPP', new Date(), { locale: enGB })
const isValidDate = isValid(parsedDate)
if (isValidDate) {
const messageDate = format(new Date(utcDate), 'PPP')
return messageDate
} else {
return 'InvalidDate'
}
}
解决方案
您可以使用parseISO,它接受 UTC 时间戳并返回一个Date
对象:
import { isValid, format, parseISO } from 'date-fns'
export const getReadableDate = (utcDate: string | undefined): string => {
if (!utcDate) {
return 'Invalid Date'
}
const parsedDate = parseISO(utcDate)
const isValidDate = isValid(parsedDate)
if (isValidDate) {
// parsedDate is a `Date` object, so you can use it directly,
// instead of `new Date(utcDate)`
const messageDate = format(parsedDate, 'PPP')
return messageDate
} else {
return 'InvalidDate'
}
}
您也可以使用parse
,但第二个参数应该是您要从中解析的格式,而不是您要显示的格式。在您的示例中,您应该在调用和调用时使用"yyyy-MM-dd'T'HH:mm:ss'Z'"
(ISO 格式)。parse
"PPP"
format
推荐阅读
- c++ - if 和 else 用户验证问题
- python - Python 应用程序如何使用 Docker-compose 找到 Postgres 数据库
- flutter - 通过自动格式化将 Dart/Flutter 函数链接到新行
- excel - VBA 数据输入表单获取运行时错误“91”:
- excel - 具有多个变量的 VBA Goalseek 循环
- html - 如何从选择框中显示选定的值?
- php - include_path='.:/usr/share/pear:/usr/share/php' 托管站点后出现错误
- reactjs - Form.Field 组件超出范围
- angular - 在 Angular 中,使用 WebPack 5 Module Federations,我们如何公开远程使用的 Web Worker?
- java - 如何推断 Drools 规则中的中间值