我正在使用2.22.1格式化日期。
当我输入来自日期选择器的日期时,瞬间会将日期放回一天。例如,当我尝试通过以下方式格式化日期时:
范例1:
const day = new Date(value).getDate();
const month = new Date(value).getMonth();
const fullYear = new Date(value).getFullYear();
console.log('day', day); // 7
console.log('month', month); // 5
console.log('fullYear', fullYear); //2018
Run Code Online (Sandbox Code Playgroud)
格式化功能:
moment.utc(new Date(month + ' ' + day + ' ' + fullYear), 'MM-DD-YYYY').format('DD-MM-YY')
Run Code Online (Sandbox Code Playgroud)
输出:06-05-18
预期:18/07/05
范例2:
输入:2018年5月31日星期四00:00:00 GMT + 0100(GMT夏令时)
格式化功能:
moment.utc(new Date(value)).format('DD-MM-YY')
Run Code Online (Sandbox Code Playgroud)
输出:30-05-18预期:31-05-18
moment.utc将输入转换为通用时间。
您正在运行new Date(...)基于GMT +1的输出
如果您考虑一下,这是完全有意义的。
您的输出是30-05-18,因为它是前一天的11 PM / 23:00。
这实际上将如何工作:
moment('05-06-2018', 'MM-DD-YYYY').format('DD-MM-YY')
// alternatively this:
moment.utc('05-06-2018', 'MM-DD-YYYY').format('DD-MM-YY')
Run Code Online (Sandbox Code Playgroud)
并输出: "06-05-18"
moment.js存在的原因之一是一起删除了Date您的代码。
请只阅读有关如何正确使用力矩的文档。
小智 7
我刚刚遇到这个问题,我发现暂时在“祖鲁时间”中处理的一个快速解决方案(由于字符串末尾的 Z)是.LocaleString()在日期变量之后添加。
我发现为了数据一致性,更容易以 UTC 时间存储数据,然后在向用户显示数据时将其转换为区域设置字符串。
例如,我正在使用:
moment.utc(dateVariable.toLocaleString()).format("MM/DD/YYYY")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |