当前位置: 首页 > 知识库问答 >
问题:

moment.js将日期设置为延迟1天

慕健
2023-03-14

我使用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

共有1个答案

云建木
2023-03-14

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.slicedate
(我可以这样说,因为我用javascript生成器和服务工作者编写了一个客户端日志解析器,用于统计反作弊分析
我确实建议您使用这些东西来提高您的知识。

 类似资料:
  • 使用Moment.js我无法将正确的矩对象转换为具有时区的日期对象。我找不到正确的日期。 例子:

  • 问题内容: 我刚开始用Java编写代码,我正努力设置DelayQueue, 我想这样 我只是想学习所有的基础知识,并且从api上学到了内容,似乎无法掌握它。 提前致谢 问题答案: 该直到一定的延时已经过期保持要素内部。元素必须实现接口。 例如,我创建了一个扩展Delayed接口的类。这将实现compareTo和getDelay()方法 结果:

  • 问题内容: 我试图在加载器图标和​​成功的html之间添加一个小的延迟(2秒)。 我尝试使用的是setTimeout并放入延迟号。这是行不通的,所以我希望您能告诉我正确的方法是什么。 我的ajax代码: 现在,它运行得非常快。希望有人能帮忙。 问题答案: 应该用在里面 。

  • 我的日期格式为。如何使用JavaScript将其转换为? 上面的代码给了我相同的日期格式,。我该怎么解决这个?

  • 我如何从moment.js获得ISO 8601?