【问题标题】:Update Date or time from an ISO string moment JS library从 ISO 字符串时刻 JS 库更新日期或时间
【发布时间】:2021-11-19 05:57:12
【问题描述】:

从给定字符串更新日期或时间的最简单方法是什么。例如,我有以下格式的时刻日期。

start: '2021-09-30T06:30:00-04:00'

expected output: '2021-09-29T06:30:00-04:00'

现在我想保留当前时间,但将日期替换为 29 日或 28 日,或者更改月份。我该怎么做,我可以使用原生 JS 日期或时刻库,但关键是字符串的其余部分必须相同,它绝对应该保持时区偏移。

【问题讨论】:

  • 在纯 JS 中,您可以用 Z 替换偏移量,解析它,在 UTC 中执行所有操作,然后使用 toISOString 并再次用偏移量替换 Z。
  • 你能演示一下如何做吗?

标签: javascript date datetime momentjs moment-timezone


【解决方案1】:

你可以使用

moment().set(String, Int);
moment().set(Object(String, Int));

https://momentjs.com/docs/#/get-set/set/

var dateStr = '2021-09-30T06:30:00-04:00';
var oldDate = moment(dateStr);

// Parse timezone offset
var utcOffset = moment.parseZone(dateStr).utcOffset();

var changedDate = oldDate.set("date", 29);
console.log(changedDate.utcOffset(utcOffset).format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

【讨论】:

  • 偏移量是硬编码的,应该来自字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多