【发布时间】:2016-07-05 21:54:34
【问题描述】:
我之前问过一个关于通过 Moment.js meridiem 函数格式化 AM/PM 的问题。顺便说一句,我使用的是 2.9 版
我成功地在 AM/PM 输入中添加句点并使用 this 应用小写
moment.locale('en', {
meridiem: function(hour, minute, isLower) {
if (hour < 12) {
return isLower ? 'a.m.' : 'A.M.';
} else {
return isLower ? 'p.m' : 'P.M.';
}
}
});
现在我遇到了一个问题,我需要对longDateFormat 字符串进行相同类型的格式化。
字符串为"h:mm:ss a",返回的时间为当前时间,但带有大写AM/PM
我需要返回当前时间,但输入的格式应为 a.m.下午
在文档 longDateFormat 是一个对象而不是函数的那一刻,我将如何在这里格式化子午线?
************************编辑******************
这是我的问题的一个例子。
meridiem 设置与 h a z 输入配合良好。它是小写的,有句号。
meridiem 设置不影响 longDateFormat 字符串。 am/pm 总是大写的,没有句点。无论我是否更改最初应用的 meridiem 设置。我该如何更改?
{{last_update|date:"MMMM d, y 'at' h:mm:ss a"}}.
Last updated on July 6, 2016 at 8:25:00 AM.
谢谢
【问题讨论】:
-
答案在你之前的问题中:)。如果您使用the accepted answer,您将始终使用小写a.m./p.m.。如果您使用my answer,您将知道a.m./p.m. 大小写(取决于
a或A的格式)。如果您在格式中指定a,则您的 sn-p 返回 AM/PM,如果您设置A(反转默认逻辑),则返回 a.m./p.m. -
嗨@VincenzoC 我没有关注你。即使设置了 meridiem,longDateFormat 也不正确。 longDateFormat a 返回一个大写的 AM PM,没有句点
-
如果您删除
meridiem自定义会发生什么?在我看来,由于meridiem函数中的三元运算符,您得到了大写的 AM/PM。当格式包含小写a时,isLowerCase是true,而当你有大写A时,isLowerCase是false。删除isLowerCase检查应该可以解决您的问题。也许您可以添加一个重现您的问题的 sn-p 以进一步澄清您的问题。 -
@VincenzoC 我更新了问题并发布了几张图片
-
抱歉我看不到图片,可能是上传时出了点问题。无论如何,您的问题的代码示例比屏幕截图要好得多。
标签: javascript angularjs datetime momentjs