繁体   English   中英

使用 moment 在特定时区的 utc 从日期到一天的开始时间和结束时间

[英]From date to day start time and end time in utc in specific timezone using moment

您好我正在尝试使用 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变量中的日期用引号括起来,因为它应该是一个字符串。 否则,它只是减去2020 - 8 - 211991

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

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)

在线运行和编辑此代码

Output:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM