moment 与 date-fns 区域设置日期格式

2024-01-22

我正在我们的应用程序的上下文中评估 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 中,似乎没有区域设置正确的长日期、短日期、时间等的格式选项。 https://date-fns.org/v1.29.0/docs/format。他们给出的使用区域设置的示例要求您向其传递区域设置特定的格式字符串:

// 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}
)

这些格式已本地化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

moment 与 date-fns 区域设置日期格式 的相关文章

随机推荐

  • 如何在特定 XY 位置将位图覆盖在另一个位图上

    我正在开发一个使用画布的项目 用户可以触摸将一个位图覆盖移动到另一个位图 当用户按下保存按钮时 两个位图应合并并成为单个位图 我已经完成了所有操作 现在仍然在 XY 位置合并两个位图 在我的研究过程中 我发现了以下代码 private Bi
  • 使用 rscript 时出错

    我在 Mac OS X El Capitan 10 11 5 上安装了 R 的 Homebrew 版本 我已经成功使用 rscript 大约两周了 但是 当我今天早上尝试使用运行脚本时rscript file r 我收到以下错误 usr l
  • 模拟器中没有日历

    我正在构建一个应用程序 该应用程序访问 Facebook 帐户并获取事件 然后将它们添加到 Android 日历 模拟器中没有日历 我们尝试设置 Calendar apk 但没有成功 任何想法 我想直接通过代码将事件添加到日历中 是否可以或
  • IBM Worklight 6.0 - 启用控制台登录身份验证后出现混合端口号?

    希望进行 Worklight Console 身份验证 我按照此链接中的信息中心说明进行操作信息中心 http pic dhe ibm com infocenter wrklight v6r0m0 topic com ibm worklig
  • MATLAB 设置 - 如果出现错误则停止

    我发现 出错时始终停止 如果出错则停止 在调试 MATLAB 代码时非常有用 但是 关闭 matlab 也会将其重置为 如果出现错误 永不停止 我怎样才能让这个设置持续存在 这确实是解决方案 在 Mathworks 中进一步挖掘得出了确切的
  • 在 UIScrollView 中使用 UIImageView 或 UIButton 时出现问题

    我使用 UIScrollView 来保存大小为 80x80 的不同数量的图像 当用户点击一个图像时 我希望它启动到全屏显示等模式视图中 我遇到的问题是检测滚动视图内图像的触摸 到目前为止我已经尝试了两种方法 但每种方法都有一个问题 我以两种
  • 如何用前导 0 填充个位数

    我正在循环一个由一位数和两位数组成的数组 打印这些值时 我需要确保所有值都显示为两位数 我需要一个解决方案 在单位数字前面添加零 但保持两位数字不变 换句话说 我想通过添加零将数字字符串 左填充 到至少两位数字 如何更改代码以呈现值 1 到
  • 根据文本长度调整文本框和表单大小

    如何根据文本长度自动增大 减小 TextBox 和 Windows 窗体大小 您可以尝试覆盖文本更改时 http msdn microsoft com en us library system windows forms control o
  • axios response.blob 不是函数

    我试图从 nodeJS 传递一个类型为 image jpeg 的 blob 来做出反应 在nodejs端 我使用arraybuffer传递数据 在react端 我尝试使用res blob检索它 它通常应该将数据转换回来 问题是 axios
  • 创建两个具有相同源的 HTML5 视频元素不起作用

    我正在尝试做一件简单的事情 但到目前为止我还没有取得任何成功 而且我不明白为什么它不起作用 我需要两个 或多个 HTML5 视频元素来播放同一个视频 但它不起作用 这是我一直在尝试的代码 http jsfiddle net 4K8DZ ht
  • 杰克逊的“轻松”字段名称

    我正在尝试Jackson配置 我想知道是否有任何选项可以反序列化不同类型的字段模式 例如 我有一个对象 class DeserializeIt String fieldOne String fieldOneAndHalf String fi
  • IIS 7 重写规则和 Url.Content 问题

    我在 IIS 7 中有以下规则
  • 控制反转是面向对象语言特有的吗?

    提出这个问题的另一种方式是 您认为什么是控制反转 我问这个问题是因为维基百科文章IoC http en wikipedia org wiki Inversion of control已被非 OO 解释劫持 这是取自讨论页 http en w
  • 更改 DataFrame.write() 的输出文件名前缀

    通过 Spark SQL DataFrame write 方法生成的输出文件以 part 基本名称前缀开头 例如 DataFrame sample 07 hiveContext table sample 07 sample 07 write
  • 需要一个需要大写或小写字母的 JavaScript 正则表达式

    我有一个正则表达式 现在只允许小写字母 我需要一个需要小写或大写字母的正则表达式 a z 你无法从这里到达那里 我有一个正则表达式 现在只允许小写字母 我需要一个需要小写或大写字母的正则表达式 a z 不幸的是 它是完全不可能使用 Java
  • 有没有办法在新窗口中更改 pdf 的标题?

    有没有办法在新窗口中更改 pdf 的标题 我试过了 prntWin window open data application pdf base64 response prntWin document title Testing And th
  • 如何从 Sharepoint 资源库获取文件名

    如何从 SharePoint 2013 资源库获取图像的文件名 我正在尝试编写一个 JQuery REST 片段来根据图像的其他列值搜索库中的图像子集并显示它们 我会用FileLeafRef如果是文档库 但我在资源库中找不到等效字段 到目前
  • 计算文本文件中的行数(java)

    下面是我如何计算文本文件中的行数 只是想知道还有其他方法可以做到这一点吗 while inputFile hasNext a inputFile nextLine inputFile close 我正在尝试将数据输入到数组中 我不想读取文本
  • Java:为什么常量池只为字符串值维护?

    我的问题是关于java实习和常量池 Java维护一个常量池java lang String 巧妙地使用 JVM 内存 并且这样做 java lang String 是不可变的 那么为什么java不维护其他不可变类型的常量池 比如Long I
  • moment 与 date-fns 区域设置日期格式

    我正在我们的应用程序的上下文中评估 DateFns 和 Moment 并发现 DateFns 中似乎有一个重要的遗漏 在 Moment 中 区域设置支持允许您格式化日期或时间的区域设置正确的表示形式 例如 日期格式 LL 和 L 将为英语区