我不是js的菜鸟,但我还没有做过大量的dates工作。
我需要在格林尼治标准时间的三个时区(偏移量+5:30,+7,+8)中获取"now“,我不知道var now = new Date();是否会是世界上任何地方的本地"now”,或者我是否需要为每个时区计算一个单独的"now“,以基于格林尼治标准时间或协调世界时进行评估。
然后我需要将"now“变量与这三个时区中的日期( 2019年11月19日上午10:00 )进行比较。例如,
let now = new Date();
let presale530 = new Date('11-19-2019 10:00 AM GMT+5:30'); // Bangalore
if (now > presale530) {
// start the presale in Bangalore
}以上操作需要与不同的时区同时进行:
let now = new Date();
let presale7 = new Date('11-19-2019 10:00 AM GMT+7'); // Jakarta
if (now > presale7) {
// start the presale in Jakarta
}发布于 2019-11-16 13:51:38
我搞不懂var now = new Date();是世界上任何地方的本地"now“,还是需要为每个时区计算一个单独的"now”,以基于格林尼治标准时间或协调世界时进行评估。
日期是UTC,因此无论本地偏移量如何,“现在”都是相同的,但需要注意的是必须正确设置系统时钟。系统时区偏移量仅在假定为本地值的情况下使用(普通设置方法、解析没有偏移量的字符串等)。
Date.prototype.toString根据主机系统时区偏移量返回一个字符串,普通的get方法返回本地值。
getUTC方法返回UTC值,并且无论主机系统设置如何,它们都应该是相同的(具有与上面相同的警告)。
然而,如果你有一个像“11月19日,2019 10:00 AM”这样的字符串而没有时区偏移,那么你将不得不手动解析和应用偏移(要么编写自己的函数,要么使用库)。
例如,将“2019年11月19日10:00 AM”这样的字符串解析为UTC并应用+05:30这样的时区偏移量的函数是:
/* Parse string in format MMMM DD, YYYY hh:mm a as UTC and apply
** a timezone offset in format +/-HH:mm)
**
** @param {string} s - string to parse
** @param {string} offset - +/-HH:mm default '+00:00'
** @returns {Date}
*/
function myParse(s, offset = '+00:00') {
let months = ['jan','feb','mar','apr','may','jun',
'jul','aug','sep','oct','nov','dec'];
let b = s.split(/[ ,:]+/);
let m = months.indexOf(b[0].toLowerCase().substr(0,3));
let hr = +b[3];
let min = +b[4];
let ap = b[5];
hr = (hr % 12) + (ap.toLowerCase() == 'am'? 0 : 12);
// Get hr and min of timezone offset with sign
let c = offset.split(':');
let oSign = c[0] < 0? '-' : '+';
let oHr = +c[0]
let oMin = c[1] * (oSign == '-'? -1 : 1);
// Create date using values as UTC, apply offset
return new Date(Date.UTC(b[2], m, b[1], hr + oHr, min + oMin));
}
// +00:00 - i.e. UTC
console.log(myParse("November 19, 2019 10:00 AM"));
// +05:30
console.log(myParse("November 19, 2019 10:00 AM", '+05:30'));
// -07:00
console.log(myParse("November 19, 2019 12:00 AM", '-07:00'));
// Difference in dates is 12:30, which is the difference in timezone offsets
但是,如果您有其他日期算法要执行或要支持不同格式,库可能会有所帮助。
https://stackoverflow.com/questions/58887164
复制相似问题