javascript - 格式化Javascript日期时间月份年份
问题描述
我正在尝试将 Javascript 日期时间、年份和月份信息格式化为如下所示:
//"Mon, Nov 5 08:46:20 PM"
为此,我在此处遵循 Mozilla 文档,如下所示:
var options = {
weekday: 'short',
month: 'short',
day: 'numeric',
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
hour12: true
};
console.log(new Date().toLocaleDateString('en-US', options));
// always returns "Mon, Nov 5, 8:44:10 PM"
尽管我将其指定为“2 位”,但为什么是hour
1 位格式?如何实现此问题开头所述的格式?预先感谢您的回答!
解决方案
您可以使用RegExp并String.prototype.replace()
解决该问题:
const options = {
weekday: 'short',
month: 'short',
day: 'numeric',
hour: "2-digit",
minute: "2-digit",
second: "2-digit",
hour12: true
};
// Tue, Nov 6, 04:04:55 AM:
console.log(new Date(1541473495383).toLocaleDateString('en-US', options).replace(/, (\d):/, ', 0$1:'));
// Tue, Nov 6, 10:04:55 AM:
console.log(new Date(1541495095383).toLocaleDateString('en-US', options).replace(/, (\d):/, ', 0$1:'));
// Now:
console.log(new Date().toLocaleDateString('en-US', options).replace(/, (\d):/, ', 0$1:'));
什么.replace(/, (\d):/, ', 0$1:')
是:
仅当小时部分有一个数字 ( ) 时才匹配小时部分(逗号和空格之后,冒号之前
\d
);否则,它将不匹配,也不会替换任何东西。捕获该数字。
用完全相同的内容替换整个匹配项,但
0
在小时数字之前添加一个额外的数字,我们可以在替换字符串中将其访问为$1
.
推荐阅读
- java - 在 MapStruct 中抛出 noSuchMethodError
- python - 是否可以为 Python 中的一系列列替换特定的字符串?
- flutter - Flutter ListView 通过拖动选择项目
- php - 如何路线:: 组
- scala - Flink ProcessWindowFunction 编译错误
- rest - 通过 ServiceNow REST API 获取活动
- amazon-web-services - 使用 aws cli 从 AWS 中的安全组更新现有 IP
- deep-learning - 学习率 AdamW 优化器
- python - Pylint:未安装 Linter pylint。安装为扩展后 - VScode
- python - 在 python 与 ipython 中加载模块