javascript - 如何将字符串日期转换为特定格式?
问题描述
我正在尝试从特定格式的字符串中获取日期,例如:
const format = 'MM/dd/yyyy HH:mm';
const dt = "2021-03-11T22:00:00.000Z"; // expecting "03/11/2021 22:00"
console.log(moment(dt).format(format)); // but getting "03/Th/yyyy 23:00"
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
我尝试了 js date、moment、luxon,但我不明白如何制作这个 :(
我怀疑这000Z
有问题,但这是我得到的日期。
解决方案
Moment.js 和 Luxon 的区别在于格式键的大小写。请查看密钥/令牌表。
注意: Moment.js 已被弃用,取而代之的是团队的新库 Luxon 和ECMA-402中引入的其他 ECMA 脚本标准。如果您现在正在考虑使用 Moment.js,只需切换到 Luxon。
如果您使用的是 Luxon,则可以.toUTC()
在格式化日期之前立即调用。确保您的日期 ( dd
) 和年份 ( yyyy
) 格式键是小写的。
const DateTime = luxon.DateTime;
const
format = 'MM/dd/yyyy HH:mm',
dt = "2021-03-11T22:00:00.000Z";
console.log(DateTime.fromISO(dt).toUTC().toFormat(format)); // 03/11/2021 22:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>
如果您使用的是 Moment.js,则可以.utc()
在格式化日期之前立即调用。确保您的日期 ( DD
) 和年份 ( YYYY
) 格式键是大写的。
const
format = 'MM/DD/YYYY HH:mm',
dt = "2021-03-11T22:00:00.000Z";
console.log(moment(dt).utc().format(format)); // 03/11/2021 22:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
推荐阅读
- mysql - 为什么 node.js 或 express.js 的查询响应时间比 PHP 和 Mysql 客户端更长?
- c++ - 为什么模板函数不能作为模板模板参数传递?
- firebase - Firebase 使用 cloudfunctions.net 而不是托管重写规则
- ios - 当应用程序在后台时没有收到通知(iOS react-native)
- if-statement - 获取谷歌表格中某些列值为零的上一个行索引
- nginx - 重写 nginx url
- sql-server - 检查 MGET/MPUT 的访问是否被阻止
- python - Python 电子邮件不是作为一个整体出现的
- react-native - 从 react-native 中的 AsyncStorage 获取项目值
- .htaccess - 如何修复此 URL 的 301 重定向