如何解决在 date-fns 库中将 UTC 时间戳字符串转换为人类可读的格式
我这里有一个 UTC 字符串。
2021-04-01T21:26:19Z
我想使用 date-fns 中的 PPP
格式将其转换为人类可读的格式
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'"
时使用 parse
(ISO 格式),并在调用 "PPP"
时使用 format
。
这在打字稿中对我有用
Name ID 600 3000
A 1 1 1
B 2 0 1
C 3 1 1
C 4 0 1
D 4 1 1
但我想看看其他库如 export const getReadableDate = (utcDate:string | undefined):string => {
if (!utcDate) {
return 'Invalid Date'
}
const options = { year: 'numeric',month: 'long',day: 'numeric' }
// @ts-ignore
return new Date(utcDate).toLocaleDateString(undefined,options)
}
如何实现这种转换,我认为这是一项非常常见的任务
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。