如何在以午夜 00 点为中心的 javascript 中向 UTC 时间戳添加 3 个月?
How to add 3 months to a UTC time stamp in javascript centered at midnight 00 Hours?
我想在 javascript 中将今天的日期加上 3 个月。这是我的代码:
var now = new Date();
now.setHours(0, 0, 0, 0);;
now.setMinutes(0);
var plus3mo = new Date();
plus3mo.setMonth((now.getMonth() + 3));
plus3mo.setHours(0, 0, 0, 0);
plus3mo.setMinutes(0);
var utc_timestamp_today = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
var utc_timestamp_3moFromNow = Date.UTC(plus3mo.getFullYear(), plus3mo.getMonth(), plus3mo.getDate(), 0, 0, 0, 0);
我想在今天的日期上加上 3 个月,然后得到时间。它正在这样做,但要注意的是我需要将时间设置为恰好 00 点或凌晨 12 点。我的代码得到了奇怪的结果。
这是我在调试和使用此 UTC time stamp converter site 时查看的结果。
1441929600000 --> 09/10/2015 20:00:00 ("Today's Date")
1449792000000 --> 12/10/2015 19:00:00 ("3 Months From Now")
如您所见,我添加了 3 个月,但时间集中在晚上 8 点和晚上 7 点。为什么会这样?
在 JS 中使用日期操作总是给你一个相对于浏览器本地时间的日期。所以使用
var now = new Date();
now.setHours(0, 0, 0, 0);
now.setMinutes(0);
将为您提供一个 now
中的日期,该日期是您当地时间的午夜,但在您当地相对于 UTC 的时区偏移。 (我假设当前是 +4 小时,然后更改为 +5 小时)当冬季夏令时开始时。
为了获得每个日期的午夜 UTC,我建议:
- 使用 getTime/valueOf
从每个日期获取 UTC 日期时间戳
- 使用 getTimezoneOffset
确定偏移量
- 将偏移量从分钟转换为毫秒(乘以 60000)并从原始时间戳中减去
- 如果您需要原始语言环境中的日期对象但在午夜 UTC
,请对每个日期对象使用 setTime
我想在 javascript 中将今天的日期加上 3 个月。这是我的代码:
var now = new Date();
now.setHours(0, 0, 0, 0);;
now.setMinutes(0);
var plus3mo = new Date();
plus3mo.setMonth((now.getMonth() + 3));
plus3mo.setHours(0, 0, 0, 0);
plus3mo.setMinutes(0);
var utc_timestamp_today = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
var utc_timestamp_3moFromNow = Date.UTC(plus3mo.getFullYear(), plus3mo.getMonth(), plus3mo.getDate(), 0, 0, 0, 0);
我想在今天的日期上加上 3 个月,然后得到时间。它正在这样做,但要注意的是我需要将时间设置为恰好 00 点或凌晨 12 点。我的代码得到了奇怪的结果。
这是我在调试和使用此 UTC time stamp converter site 时查看的结果。
1441929600000 --> 09/10/2015 20:00:00 ("Today's Date")
1449792000000 --> 12/10/2015 19:00:00 ("3 Months From Now")
如您所见,我添加了 3 个月,但时间集中在晚上 8 点和晚上 7 点。为什么会这样?
在 JS 中使用日期操作总是给你一个相对于浏览器本地时间的日期。所以使用
var now = new Date();
now.setHours(0, 0, 0, 0);
now.setMinutes(0);
将为您提供一个 now
中的日期,该日期是您当地时间的午夜,但在您当地相对于 UTC 的时区偏移。 (我假设当前是 +4 小时,然后更改为 +5 小时)当冬季夏令时开始时。
为了获得每个日期的午夜 UTC,我建议:
- 使用 getTime/valueOf 从每个日期获取 UTC 日期时间戳
- 使用 getTimezoneOffset 确定偏移量
- 将偏移量从分钟转换为毫秒(乘以 60000)并从原始时间戳中减去
- 如果您需要原始语言环境中的日期对象但在午夜 UTC ,请对每个日期对象使用 setTime