世界时、夏令时和 JavaScript
Universal Time, Daylight Savings and JavaScript
我正在尝试编写一个JavaScript代码,该代码将在一天中的两个小时之间显示特定消息。我们使用的是东部标准时间,但我使用世界时间没有问题,因为这使得编写脚本变得更加容易。到目前为止,我有这个并且效果很好,但是,我对使用夏令时完全感到困惑。
$(document).ready(function(){
var todaysDate = new Date();
var weekday = todaysDate.getDay();
var universalhour = todaysDate.getUTCHours();
if (weekday >= 0) {
if (weekday <= 4) {
if (universalhour >= 14) {
if (universalhour < 23) {
$('div#announcements span').append('<br />Open.');
}
}
}
}
if (weekday == 5) {
if (universalhour >= 14) {
if (universalhour < 20) {
$('div#announcements span').append('<br />Open.');
}
}
}
});
基本上,消息"开放"应仅在美国东部标准时间周日至周四上午 10 点至晚上 8 点之间显示,美国东部标准时间周五上午 10 点至下午 4 点。
我与 UST 合作没有问题,我只需要帮助找出夏令时的解决方法,因为这超出了我的知识领域。
案例 1
如果您的计算机设置为在东部时区上运行,并且您使用此更改:
var hour = todaysDate.getHours();
然后在所有测试中使用该变量。
那应该照顾好它。
案例2
如果你正在编写JavaScript,以便在某个网络/互联网连接结束时在客户端计算机上运行,你需要将一些东西从服务器传递到客户端,以便javascript可以告诉东部时区的时间。
因此,您可以在网页中包含以下内容
<script>
// The global value is filled in by the server based on current time on your server which is
// running EST or can calculate it. That code might be PHP or Java or Ruby or ...
var ESTOffset = 5.0;
</script>
然后,您必须使用这样的计算:
var hour = todaysDate.getUTCHours() + ESTOffset;
困难的部分是你显示消息并期望它根据东部时间而变化。如果用户弹出页面并将其保留到东部标准时间开始,该怎么办?你需要处理吗?如果美国东部时间快下午 2 点并且页面弹出怎么办?您是否必须在几分钟后弹出消息?
案例3
如果您需要在运行任意时区的计算机上计算 EST 时间(包括 DST),您将遇到麻烦。javascript中没有任何内容可以让你问"美国纽约几点了?"。您将需要一些知道规则的库,如果规则在 EST 中更改,您将不得不更新(或确保更新)。 或者您可以自己添加一些代码,这些代码知道 DST 何时在 EST 中开始和结束并进行数学运算。当然,如果规则更改,则必须更新代码。
这是使用库最容易做到的。 使用时刻.js与时刻时区:
$(document).ready(function(){
var now = moment().tz("America/New_York");
var weekday = now.day();
var hour = now.hour();
var isOpen = (weekday >= 0 && weekday <= 4 && hour >= 10 && hour < 20) ||
(weekday == 5 && hour >= 10 && hour < 16);
if (isOpen) {
$('div#announcements span').append('<br />Open.');
}
});
请务必包含时区数据构建器中America/New_York
区的数据。 这是美国东部时间的 IANA 时区标识符。
这里的主要优点是,您可以用当地时间来表示您的小时数,这将自动考虑夏令时的任何变化。 换句话说,这些时间位于美国的"东部时间"区域,而不必专门使用"东部标准时间"或"东部夏令时间"。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- JavaScript - 检查时区的夏令时
- 使用javascript,将日期字符串与夏令时进行比较
- 它有一个库或Web服务,可以为我的javascript应用程序提供夏令时数据
- 如何使用 Javascript 确定夏令时是否对给定日期和时区有效
- 世界时、夏令时和 JavaScript
- JavaScript、时区和夏令时
- 如何在JavaScript中处理夏令时和时区
- 考虑到夏令时,Java和JavaScript之间“日期”交换的最佳实践
- Javascript处理不同时区的夏令时
- 通过忽略夏令时javascript将日期转换为UTC
- Javascript在没有夏令时的情况下无法获取时区
- Javascript日期toLocaleString是否考虑夏令时?
- Javascript日期夏令时问题
- JavaScript's Date对象是否自动处理夏令时?
- 即使当前时间是标准时间,Javascript日期构造函数也默认为夏令时
- Javascript日期-如何知道夏令时是否在给定时区生效