显示不同城市,国家/地区的不同时区

时间:2015-08-07 15:20:26

标签: javascript

请帮忙!我试图为不同的城市,国家/地区显示不同的时区。(偏移/ UTC)这样,当我设置营业时间时,如果它打开或关闭,它将显示。这是我的JS:

var checkTime = function () {
var now = new Date();
var timeDiv = document.getElementById('timeDiv');
var messageDiv = document.getElementById('messageDiv');
timeDiv.innerHTML = now.toString();

var dayOfWeek = now.getDay(); // 0 = Sunday, 1 = Monday, ... 6 = Saturday
var hour = now.getHours(); // 0 = 12am, 1 = 1am, ... 18 = 6pm

// check if it's a weekday between 9am and 6pm
if (dayOfWeek > 0 && dayOfWeek < 6 && hour > 8 && hour < 18) {
    messageDiv.innerHTML = 'Yes, we\'re open!';
    messageDiv.className='open';            
}
else {
    messageDiv.innerHTML = 'Sorry, we\'re closed!';
    messageDiv.className='closed';
}
};

setInterval(checkTime, 1000);
checkTime();

2 个答案:

答案 0 :(得分:-1)

使用Moment Timezone库,您可以执行以下某些功能:

在任意时区中格式化日期

var jun = moment("2014-06-01T12:00:00Z");
var dec = moment("2014-12-01T12:00:00Z");

jun.tz('America/Los_Angeles').format('ha z');  // 5am PDT
dec.tz('America/Los_Angeles').format('ha z');  // 4am PST

jun.tz('America/New_York').format('ha z');     // 8am EDT
dec.tz('America/New_York').format('ha z');     // 7am EST

jun.tz('Asia/Tokyo').format('ha z');           // 9pm JST
dec.tz('Asia/Tokyo').format('ha z');           // 9pm JST

jun.tz('Australia/Sydney').format('ha z');     // 10pm EST
dec.tz('Australia/Sydney').format('ha z');     // 11pm EST

在时区之间转换日期

var newYork    = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london     = newYork.clone().tz("Europe/London");

newYork.format();    // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format();     // 2014-06-01T17:00:00+01:00

您可以在此处找到图书馆:http://momentjs.com/timezone/

答案 1 :(得分:-1)

首先,javascript使用客户端机器的时间,这意味着你不必担心时区(当你打电话给&#34;新的日期()&#34;)它将永远是现在在客户端。

但是,对于营业时间,您需要在服务器端检查商店是否在另一个位置(具有不同的时区),因为客户时间不能完全被推送。

此外,您无法编写时区功能,如果您仍需要处理它,必须使用库。为什么?这就是为什么:

https://www.youtube.com/watch?v=-5wpm-gesOY

在您的代码中,我不认为任何地方都需要时区。