如何将日期从 date fns 字符串格式转换为 Date 对象

问题描述 投票:0回答:2

我有一个日期对象,这是我进行字符串化时的

   const date =  "2022-03-13T18:30:00.00Z"

现在我尝试使用 date-fns 将其转换为格式

format(date, "dd MMM yyyy")

这将返回

string
,而不是日期字符串中的日期对象。

我尝试过

format(parseISO(date), "dd MMM YYYY")

还是不行。接下来我可以尝试什么?

javascript date-fns
2个回答
0
投票

format
是一个始终返回字符串的函数。您无法让它返回
Date
对象,因为
Date
对象不仅仅是格式化字符串的一种方式。您可以在
date-fns 文档
中阅读有关 format 的信息。
如果您想使用字符串来获取
date
对象,只需使用
Date
类的构造函数即可。以下是实例化
Date
对象的一些可接受的方法:

new Date( )
new Date(milliseconds)
new Date(datestring)
new Date(year,month,date[,hour,minute,second,millisecond ])

对于您的情况,我们将使用

new Date(dateString)
,因为您已经有了。所以你可以简单地这样做:

const date =  "2022-03-13T18:30:00.00Z";
const dateObject = new Date(date);

然后你将拥有一个

Date
对象以及它附带的所有便捷方法。
当然你不需要使用
const
,我只是按照你所拥有的。
我建议阅读有关
Date
对象的内容。 教程点页面是一个很好的起点。


0
投票

您显示的日期字符串 ("2022-03-13T18:30:00.00Z") 可以简单地转换为

Date
对象。现在,要将其格式化回您想要的日期字符串,请尝试使用
Intl.DateTimeFormat

const date =  new Date("2022-03-13T18:30:00.00Z");
const formatOptions = { year: 'numeric', month: 'long', day: '2-digit' };
const [MMM, dd, yyyy] = new Intl.DateTimeFormat(`en-EN`, formatOptions)
  .formatToParts(date)
  .filter( v => v.type !== `literal`)
  .map( v => v.value );
console.log(`${dd} ${MMM} ${yyyy}`);

© www.soinside.com 2019 - 2024. All rights reserved.