任何时区的用户都以太平洋时间输入日期
User in any time zone enters a date in Pacific Time
好吧,也许我对此特别敏感。。。但我想知道如何让世界各地任何时区的用户使用时间选择器在太平洋时间输入时间,然后在保存后看到它在太平洋时间打印回他们(太平洋标准时间或太平洋标准时间,具体取决于)。让我们以纽约的某个人为例。我认为流程应该是这样的:
- 在输入字段中,此人选择"下午1点"(表示太平洋时间下午1点)
- JS将其读取为东部时间下午1点,并将其转换为UTC Unix时间戳
- UTC Unix时间戳已张贴到数据库
- 在显示结果中,时间戳被转换为太平洋时间。然而,你看,现在显然有一个问题,太平洋时间会读成"上午10点",因为张贴的时间戳是东部时间
如果我理解得很好,如果你能将你已经拥有的日期(从时间选择器构建)中的时区(无论是什么)更改为太平洋时间,你的问题就会得到解决。
使用即时时区,您可以通过以下操作来做到这一点:
function convertLocalToPst(localDate) {
var pacific = moment().tz('US/Pacific');
var m = moment(moment(d).utc().format("MM/DD/YYYY HH:mm"));
m = pacific.isDST() ? m.utcOffset('-0800') : m.utcOffset('-0700');
return m.toDate();
}
基本上,您可以使用以下函数:
function convertUtcToPacificTime(utcDate) {
var timezoneOffset = new Date().getTimezoneOffset();
// set the time back 7 hours for PDT or 8 hours for PST
// from the current utc date
utcDate.setTime(utcDate.getTime()-(timezoneOffset/60)*3600*1000);
}
.getTimezoneOffset()
以分钟为单位检索当前时区和UTC之间的差值,因此我要除以60。在PDT中,函数将返回420,而在PST 480中(当除以60时,分别为7和8)。
您的HTML选择框可能如下所示:
<select class="time-select">
<option value="<!-- timestamp for 1 pm UTC -->">1 pm</option>
<option value="<!-- timestamp for 2 pm UTC -->">2 pm</option>
...
</select>
一旦你得到了用户选择的时间戳,你就可以使用上面的函数进行转换:
$('.time-select').change(function() {
var timestamp = $(this).val();
var date = new Date(timestamp);
if (!isNaN(date)) { // check if date is valid
convertUtcToPst(date);
// the 'date' var now contains
// the PST date of the selected timestamp
// post the timestamp to the DB
} else {
// handle invalid date scenario
}
});
此外,要计算UTC时间戳,只需对JS Date对象调用.getTime()
。
相关文章:
- Java脚本时间添加
- Json数据包含日期和时间格式
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 在wordpress一定时间后更改自定义字段
- 更改angularjs中的日期-时间格式
- 将当前时间添加到我的页面上的特定部分
- 门户网站:当地时间有多有用
- 显示时间的脚本
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 通过JSON&比较时间
- Javascript时间轨迹
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 如何将此日期“太平洋标准时间 2016 年 3 月 9 日星期三 09:48:09”转换为“YYYY-MM-DD HH:
- 我如何设置计时器在太平洋标准时间每天中午12点结束
- 将JavaScript倒计时设置为在太平洋标准时间午夜结束
- 使用JavaScript显示本地时间(洛杉矶时间或太平洋时间)和纽约时间
- 如何将太平洋时间(可能是PST或PDT)转换为UTC时间
- 用JavaScript将太平洋标准时间凌晨1点转换为当地时间
- 任何时区的用户都以太平洋时间输入日期