我使用2.22.1设置日期格式。
当我输入来自日期选择器的日期时,moment会将日期放回某一天。例如,当我尝试以以下方式格式化一个日期时:
示例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
格式化功能:
moment.utc(new Date(month + ' ' + day + ' ' + fullYear), 'MM-DD-YYYY').format('DD-MM-YY')
输出:06-05-18
预计:07-05-18
示例2:
输入:2018年5月31日Thu 00:00:00 GMT+0100(GMT夏令时)
格式化功能:
moment.utc(new Date(value)).format('DD-MM-YY')
产出:30-05-18预期:31-05-18
moment.utc
将输入转换为通用时间。
您运行的New Date(...)
输入基于GMT+1。
如果您考虑到这一点,它完全有意义。
您的输出是30-05-18
,因为这是前一天的11点/23点。
这(如何)实际上会起作用:
moment('05-06-2018', 'MM-DD-YYYY').format('DD-MM-YY')
// alternatively (and preferrably) this:
moment.utc('05-06-2018', 'MM-DD-YYYY').format('DD-MM-YY')
和输出:“06-05-18”
因为在本例中,非utc版本不需要输入时间。
moment.js存在的原因之一,是要在代码中全部删除date
。
(请记住,date
现在已经有了很大的改进。DateTimeFormat是一个游戏规则的改变者)
请阅读有关如何正确使用momentjs的文档。
编辑:如果您想用它处理400000个日期,我建议您改用regexp
、.split
、.exec
、.slice
或date
。
(我可以这样说,因为我用javascript生成器和服务工作者编写了一个客户端日志解析器,用于统计反作弊分析)
我确实建议您使用这些东西来提高您的知识。