Javascript 将UK EndDate与UTC当前时间进行比较?

Javascript 将UK EndDate与UTC当前时间进行比较?,javascript,node.js,momentjs,Javascript,Node.js,Momentjs,如何将UKendDate转换为UTC,以便与节点上的UTC当前时间(nowTime)进行比较?还是换一种方式更好?将当前UTC时间转换为伦敦时区,然后与英国endDate const expired = moment().isSameOrAfter(moment.tz('2020-05-10 15:57', 'YYYY-MM-DD hh:mm', 'Europe/London')) 例如: const nowTime = new Date('Thu May 10 2020 15:55'); /

如何将UK
endDate
转换为UTC,以便与节点上的UTC当前时间(
nowTime
)进行比较?还是换一种方式更好?将当前UTC时间转换为伦敦时区,然后与英国
endDate

const expired = moment().isSameOrAfter(moment.tz('2020-05-10 15:57', 'YYYY-MM-DD hh:mm', 'Europe/London'))
例如:

const nowTime = new Date('Thu May 10 2020 15:55'); //mock now time in UTC

const date = { //this is london date/time
  EndDate: "2020-05-10",
  EndTime: "15:57",
}

const combineDateTime = date.EndDate + " " + date.EndTime;
const endDate = new Date(combineDateTime).getTime();

if (nowTime >= endDate) {
  console.log('expired');
} else {
  console.log('not expired')
}

因为您的当地时间是英国时间,所以这应该也适用于其他情况,因为您必须计算dls

 var now = new Date();
var nowTime = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),  now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
console.log('UTC (in ms): ' + nowTime.getTime())
nowTimeUTC=nowTime.getTime()

const date = { //this is london date/time via API response
  EndDate: "2020-06-12",
  EndTime: "00:12",
}

servertime=new Date(date.EndDate.concat(" "+date.EndTime))
servertimeinmill=servertime.getTime()
utcoffset=(servertime.getTimezoneOffset()/60)*60*60*1000
servetimeinUTC=servertimeinmill+utcoffset
console.log(servetimeinUTC)
console.log(nowTime>servetimeinUTC)

由于您还标记了
momentjs
,因此这是具有

对于实际的
now
时间,可以省略日期字符串

const expired = moment.tz('2020-05-10 15:57', 'YYYY-MM-DD hh:mm', 'Europe/London').isSameOrBefore()
或者如果您想在语义上等同于
nowTime>=endDate

const expired = moment().isSameOrAfter(moment.tz('2020-05-10 15:57', 'YYYY-MM-DD hh:mm', 'Europe/London'))
请注意,对于
now
,我们不需要显式传递时区。但是如果您想要一个具有
UTC
时区的对象,您可以使用

const nowInUTC = moment.utc()

你能详细说明一下,你是如何将比较仅限于日期的?只有时间?您想要的输出是什么?与日期和时间的比较从nowTime和Endate开始
nowTime>endDate
谢谢,这似乎很有效。有什么原因不能使用带时区的toLocaleString吗?可以使用
toLocaleString
来完成,但是我不建议在这个场景中使用它,因为它是为了表示时间,考虑到您选择的语言作为参数,这可能会导致一个大问题,因为
LocaleString('en-US'))
将以am/pm ex:01:00 pm的形式显示时间,但如果您选择参数('it,it')它将输出一个字符串表示形式为13:00,这可能会导致简单时间计算出现问题,但如果你以毫秒为单位计算时间,这应该不会是一个问题。如果我的答案在任何情况下都有帮助,我将非常感谢考虑向上投票并接受我的答案。它实际上不起作用。如果将nowTime更改为
newdate().getTime()
和EndTime到22:30-它应该返回false。utc中的服务器计算机。您确定new Date().getTime()以毫秒为单位提供utc中的时间吗?您可以控制台。记录它并告诉我它提供了什么?谢谢,这与Sven.hig答案有什么区别?如果您不介意另一个依赖项,我的解决方案需要另一个库,使用
时刻时区
使其更具可读性,并自动计算夏令时