在不知道机器时区的情况下比较时间
Compare time without knowing timezone of machine
此代码比较 2 个时间 - 当前时间和截止时间。
// Get current date/time
var now = new Date();
// Set up deadline date/time
var deadline = new Date(); //deadline is 1830hrs;
deadline.setHours(18);
deadline.setMinutes(30);
// Check if the current time is after the deadline
if( now > deadline ) {
console.log('after deadline');
}
else {
console.log('before deadline');
}
它适用于我的本地计算机,其中 now
和 deadline
处于同一时区。如果服务器上的代码是 运行,其中 now
时区可能与要比较的 deadline
时区不同怎么办?如何处理 now
可以是任何时区并且 deadline
处于 Asia/HongKong 时区的情况?
编辑:创建 deadline
时有什么方法可以指定时区吗?我认为这是一个可能的解决方案。
截止日期和现在总是在同一个时区,因为你new Date()
在那里。
当你在客户端的JS中创建时,不会有这种情况。因为这两个时间将从同一个客户端读取时间。
但是,如果在任何情况下任何时间来自位于另一个时区的服务器(当然是以字符串的形式)并且客户端位于另一个时区,那么这种情况就有可能发生。
现在您的方法是将两个日期都转换为特定时区(任何)。
然后进行比较。
您可以使用This库在JS中转换时区。
并寻求 This Thread.
的帮助
您缺少客户端所在时区的信息。这 部分 可以通过将其与所有时区的时间进行比较来解决。
在我的示例中,我将使用 moment.js,因为它是一个不错的库,具有许多仅用于时区的功能。
您可以使用 this code 找到匹配的时区,但有时它们对 DST 等有不同的规则,因此它们会在一年中转移。
不过,如果没问题,您现在可以使用 moment.js 指定截止日期的时区并计算您还剩多少时间。
此代码比较 2 个时间 - 当前时间和截止时间。
// Get current date/time
var now = new Date();
// Set up deadline date/time
var deadline = new Date(); //deadline is 1830hrs;
deadline.setHours(18);
deadline.setMinutes(30);
// Check if the current time is after the deadline
if( now > deadline ) {
console.log('after deadline');
}
else {
console.log('before deadline');
}
它适用于我的本地计算机,其中 now
和 deadline
处于同一时区。如果服务器上的代码是 运行,其中 now
时区可能与要比较的 deadline
时区不同怎么办?如何处理 now
可以是任何时区并且 deadline
处于 Asia/HongKong 时区的情况?
编辑:创建 deadline
时有什么方法可以指定时区吗?我认为这是一个可能的解决方案。
截止日期和现在总是在同一个时区,因为你new Date()
在那里。
当你在客户端的JS中创建时,不会有这种情况。因为这两个时间将从同一个客户端读取时间。
但是,如果在任何情况下任何时间来自位于另一个时区的服务器(当然是以字符串的形式)并且客户端位于另一个时区,那么这种情况就有可能发生。
现在您的方法是将两个日期都转换为特定时区(任何)。 然后进行比较。
您可以使用This库在JS中转换时区。
并寻求 This Thread.
您缺少客户端所在时区的信息。这 部分 可以通过将其与所有时区的时间进行比较来解决。
在我的示例中,我将使用 moment.js,因为它是一个不错的库,具有许多仅用于时区的功能。
您可以使用 this code 找到匹配的时区,但有时它们对 DST 等有不同的规则,因此它们会在一年中转移。
不过,如果没问题,您现在可以使用 moment.js 指定截止日期的时区并计算您还剩多少时间。