在 date-fns 库中将 UTC 时间戳字符串转换为人类可读的格式
Convert UTC time stamp string to human-readable format in date-fns library
我这里有一个 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'
}
}
这对我适用于 Typescript
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)
}
但我想看看 date-fns
等其他库是如何实现这种转换的,我认为这是一项非常常见的任务
您可以使用 parseISO,它接受 UTC 时间戳和 returns 一个 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
,但是第二个参数应该是你想要解析from的格式,而不是您想要显示的格式。在您的示例中,调用 parse
时应使用 "yyyy-MM-dd'T'HH:mm:ss'Z'"
(ISO 格式),调用 format
.
时应使用 "PPP"
我这里有一个 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'
}
}
这对我适用于 Typescript
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)
}
但我想看看 date-fns
等其他库是如何实现这种转换的,我认为这是一项非常常见的任务
您可以使用 parseISO,它接受 UTC 时间戳和 returns 一个 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
,但是第二个参数应该是你想要解析from的格式,而不是您想要显示的格式。在您的示例中,调用 parse
时应使用 "yyyy-MM-dd'T'HH:mm:ss'Z'"
(ISO 格式),调用 format
.
"PPP"