使用 JS 检查用户是否在 EST 时区并且在设定的 EST 时间范围内
Check if user is EST timezone and within a set EST time range using JS
我有这样一种情况,我正在尝试提醒在美国东部时间中午 12 点到凌晨 3 点之间 不是 的 EST 时区用户尝试提交 post美东时间。
伪代码:
var systemTimeZone = get current EST time ??
var currentUserTime = new Date();
If(currentUserTime > 12am EST && < 3am EST){
// show alert modal
}
在考虑夏令时的情况下,我将如何实现这一目标。
我强烈建议您研究一下 MomentJS。 date\time 比较和格式化需要大量工作。
利用 moment 来完成我认为您正在尝试实现的上述目标:
var serverTimeUtc = /* Get from server a UTC time */
var momentTime = moment(serverTimeUtc);
if (momentTime.hour() >= 0 && momentTime.hour() < 3) {
// Server event occurred between 12am and 3am local time
}
如果您只关心美国东部标准时间而不关心当地时间,那么您必须进行一些时区转换,moment.tz 可以提供帮助。
以下代码将根据格林威治标准时间提供当前日期的时区偏移量:
var today = Date.now();
today = new Date(today);
var systemTimeZone = today.getTimezoneOffset();
您只需计算 EST 的时区偏移范围:Timezone Table
此库为您提供用户所在时区的名称。如果它没有 return "America/New York",您将知道该用户不在东部时间。
使用moment.js with moment-timezone:
// get the current time in the user's local time zone
var nowLocal = moment();
// get the current time in the US Eastern time zone
var nowEastern = moment.tz("America/New_York");
// see if the time zone offsets match or not
if (nowLocal.utcOffset() != nowEastern.utcOffset())
{
// see if it's before 3:00 AM in the Eastern time zone
if (nowEastern.hour() < 3) // note: checking hour >= 0 would be redundant
{
alert("It's too early in New York!")
}
}
我有这样一种情况,我正在尝试提醒在美国东部时间中午 12 点到凌晨 3 点之间 不是 的 EST 时区用户尝试提交 post美东时间。
伪代码:
var systemTimeZone = get current EST time ??
var currentUserTime = new Date();
If(currentUserTime > 12am EST && < 3am EST){
// show alert modal
}
在考虑夏令时的情况下,我将如何实现这一目标。
我强烈建议您研究一下 MomentJS。 date\time 比较和格式化需要大量工作。
利用 moment 来完成我认为您正在尝试实现的上述目标:
var serverTimeUtc = /* Get from server a UTC time */
var momentTime = moment(serverTimeUtc);
if (momentTime.hour() >= 0 && momentTime.hour() < 3) {
// Server event occurred between 12am and 3am local time
}
如果您只关心美国东部标准时间而不关心当地时间,那么您必须进行一些时区转换,moment.tz 可以提供帮助。
以下代码将根据格林威治标准时间提供当前日期的时区偏移量:
var today = Date.now();
today = new Date(today);
var systemTimeZone = today.getTimezoneOffset();
您只需计算 EST 的时区偏移范围:Timezone Table
此库为您提供用户所在时区的名称。如果它没有 return "America/New York",您将知道该用户不在东部时间。
使用moment.js with moment-timezone:
// get the current time in the user's local time zone
var nowLocal = moment();
// get the current time in the US Eastern time zone
var nowEastern = moment.tz("America/New_York");
// see if the time zone offsets match or not
if (nowLocal.utcOffset() != nowEastern.utcOffset())
{
// see if it's before 3:00 AM in the Eastern time zone
if (nowEastern.hour() < 3) // note: checking hour >= 0 would be redundant
{
alert("It's too early in New York!")
}
}