gpt4 book ai didi

momentjs - 时刻与 date-fns 语言环境日期格式

转载 作者:行者123 更新时间:2023-12-04 12:45:30 27 4
gpt4 key购买 nike

我正在我们的应用程序的上下文中评估 DateFns 和 Moment,并发现 DateFns 中似乎有一个重要的遗漏。

在 Moment 中,语言环境支持允许您格式化日期或时间的语言环境正确表示。例如,日期格式“LL”和“L”将为英语语言环境生成以下内容:

November 27, 2017
11/27/2017

西类牙语言环境的以下内容:
27 de noviembre de 2017
27/11/2017

请特别注意,在第二个示例中,英语中的月份在日期之前,而西类牙语中的日期在月份之前。这正是您希望语言环境代码为您处理的事情。这就是语言环境在几乎所有日期时间库(C++、C#、Java、Python 等)中的工作方式

在 DateFns 中,似乎没有 format option for locale-correct long date, short date, time, etc. .他们给出的使用语言环境的示例要求您将特定于语言环境的格式字符串传递给它:
// Represent 2 July 2014 in Esperanto:
var eoLocale = require('date-fns/locale/eo')
var result = format(
new Date(2014, 6, 2),
'Do [de] MMMM YYYY',
{locale: eoLocale}
)

换句话说,我需要知道我支持的每个语言环境的日期/时间格式,这违背了首先拥有语言环境支持的目的。]

我可以使用 Javascript 的 toLocaleString,但是我的应用程序以两种不同的方式管理语言环境。

是否有某种方法可以打印出特定语言环境的“短日期”,而无需告诉 DateFns 该语言环境的格式是什么?

最佳答案

我使用 date-fns 的 esm 版本,您可以使用与 moment 使用的相同类型的格式:

import { format } from 'date-fns/esm'
import { enUS, fr } from 'date-fns/esm/locale'

我会将语言环境存储在一个对象中:
this.dateLocales = { fr: fr, en: enUS }

并使用这些格式:
LT: 'h:mm aa',
LTS: 'h:mm:ss aa',
L: 'MM/DD/YYYY',
LL: 'MMMM D YYYY',
LLL: 'MMMM D YYYY h:mm aa',
LLLL: 'dddd, MMMM D YYYY h:mm aa'

所以你可以这样做:
format(
new Date(2014, 6, 2),
'LL',
{locale: this.dateLocales.fr}
)

这些格式已本地化

关于momentjs - 时刻与 date-fns 语言环境日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47271803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com