从日期到日期,utc中使用时刻的特定时区的开始时间和结束时间



嗨,我正试图使用momentJS,根据UTC的日期开始和结束时间,找到时区的具体日期。

例如:我有一个日期:2020-08-17,时区是-5。

我想在这个特定的时区获得utc中的一天开始和一天结束时间。

我尝试了以下代码:但如果我尝试其他时区,它总是获得与utc中相同的数据开始和结束时间。

date = 2020-08-21;
timezone=-5;//+10:30, +5:30
var start_date = moment.utc(moment(date).utcOffset(timezone).startOf('day').format()).format();
var end_date = moment.utc(moment(date).utcOffset(timezone).endOf('day').format()).format();

如果我遗漏了什么,请建议

我不确定我是否正确理解了你的问题,但似乎唯一的问题是你需要用引号将date变量中的日期括起来,因为它应该是一个字符串。否则它只减去CCD_ 2,即CCD_。

即使您更改时区,代码似乎运行良好:

const moment = require('moment')
var date = "2020-08-21";
var timezone = -5; //+10:30, +5:30
var start_date = 
moment.utc(
moment(date)
.utcOffset(timezone)
.startOf('day')
).format("YYYY-MM-DD @ HH:mm:ss");
var end_date = 
moment.utc(
moment(date)
.utcOffset(timezone)
.endOf('day')
).format("YYYY-MM-DD @ HH:mm:ss");
console.log(start_date)
console.log(end_date)

在线运行和编辑此代码

输出:

2020-08-20 @ 05:00:00
2020-08-21 @ 04:59:59

如果timezone变量更改为0(UTC时间(,则结果为:

2020-08-21 @ 00:00:00
2020-08-21 @ 23:59:59

这确实是一天的开始和结束。

这样就可以了。

let myDate = new Date();
const timezoneOffset = moment(myDate).utcOffset();
moment(myDate).utc().add(timezoneOffset, 'minutes').startOf('day').format();
moment(myDate).utc().add(timezoneOffset, 'minutes').endOf('day').format();

最新更新