gpt4 book ai didi

javascript - 使用 date-fns 2.x 版时,如何将日期时间格式化为 am/pm,不带句点?

转载 作者:行者123 更新时间:2023-12-03 20:26:16 25 4
gpt4 key购买 nike

优秀日期包2.x版本date-fns只有这些内置的 am/pm 格式。

date-fns am pm formats

如何在没有句点的情况下格式化小写 am/pm?

最佳答案

-- 对于早于 2.23.0 的 datefns 版本 --
快速解决方案
使用aaaaa'm' :

format(new Date(), "YYYY-MM-DD hh:mm aaaaa'm'")
解释: @GollyJer 找到了一种非常聪明的方法来解决这个限制。我们可以使用 aaaaa产量 a (上午)或 p (针对 PM)根据 the documentation .然后我们只需在它后面加上转义字符 m ,即 'm' ,导致 ampm .
注:如果您允许任何类型的语言环境切换,这可能会导致错误的输出,因为 AM 和 PM 可能因语言而异。
其他方法
尽管如此,对于这些版本,没有 原生¹ 这样做的方式,根据文档和源代码审查,因为格式取决于源代码( _lib/format/formatters/index.js )中所示的语言环境配置:
// AM or PM
a: function(date, token, localize) {
var hours = date.getUTCHours()
var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'

switch (token) {
case 'a':
case 'aa':
case 'aaa':
return localize.dayPeriod(dayPeriodEnumValue, {
width: 'abbreviated',
context: 'formatting'
})
// ...
1:原生,我的意思是一个简单的原生 API 格式化程序。
您可以 add a new locale不过要自定义字符串。这意味着更改此特定部分(基于 locale/en-US/_lib/localize/index.js ):
var formattingDayPeriodValues = {
// ...
abbreviated: {
am: 'AM',
pm: 'PM',
// ...
}
// ...
}
遗憾的是,这个新版本没有自定义默认语言环境的简单方法,甚至只是应用猴子补丁的简单方法。创建一个新的语言环境一点也不优雅并替换 a.m.am调用 format 后手动也不是。
版本 1.x.x 和 2.0.0 (alpha/beta)
对于这些版本,只需使用 a格式。例子:

console.log(dateFns.format(new Date(), 'YYYY-MM-DD hh:mm a'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>
<!-- or: https://cdnjs.cloudflare.com/ajax/libs/date-fns/2.0.0-alpha0/date_fns.min.js -->

您可以自己查看 in the source code它的工作方式:
var meridiemLowercase = [
'am',
'pm'
];

var formatters = {
// ...
'a': function (date) {
return date.getHours() / 12 >= 1 ? meridiemLowercase[1] : meridiemLowercase[0];
},
// ...
}

关于javascript - 使用 date-fns 2.x 版时,如何将日期时间格式化为 am/pm,不带句点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728212/

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