将Javascript Date对象转换为PST时区

Ank*_*ush 2 javascript datetime

我需要从日历中选择一个未来日期,假设我选择的日期是10/14/2014,现在我想要的是将日期与时间一起发送到服务器,以便在服务器端它总是达到PST时区的6am时间和格式日期应为UTC.

我在做什么

targetDate = new Date($("#calendar").val()); targetDate = targetDate.toUTCString(); targetDate = targetDate.addHours(14);

我的理解是PST时区是-8:00所以我在UTC时间增加了14个小时,所以时间是太平洋标准时间早上6点

我面临的问题是,由于对象已经转换为字符串,因此不允许我添加14个小时.

addHours是我必须在给定时间内添加小时数的自定义函数.

如果我写

targetDate = new Date($("#calendar").val()); targetDate = targetDate.addHours(14); targetDate = targetDate.toUTCString();

然后它运作良好但在这种情况下问题是当请求来自不同的时区时,时间总是不同的.

任何帮助表示赞赏.

Tim*_*red 7

这对我有用:

var myDate = new Date(1633071599000)
var pstDate = myDate.toLocaleString("en-US", {timeZone: "America/Los_Angeles"})
Run Code Online (Sandbox Code Playgroud)

哪些输出 "9/30/2021, 11:59:59 PM"


Mat*_*int 6

你说:

我的理解是,太平洋标准时间(PST)时区为-8:00,因此我为UTC时间增加了14小时,因此时间变为太平洋标准时间(PST)上午6:00

嗯-不 那会让你第二天。如果您想停留在PST,则需要从UTC时间中减去 8个小时。 -8:00表示比世界标准时间 8个小时。

但是,太平洋时区不仅限于太平洋标准时间。夏令时在PST(-8)和PDT(-7)之间交替。为了确定正确的偏移量,您需要使用实现TZDB数据库的库。请在此处参考这个重复的答案

要做到这一点,而不看中库的唯一方法是实际在太平洋时区。JavaScript会将UTC日期转换为本地时区以进行显示,并将使用正确的偏移量。但是它只知道本地时区。如果太平洋时间不是您的本地时区,那么您必须使用图书馆。


小智 6

var date = new Date();
var utcDate = new Date(date.toUTCString());
utcDate.setHours(utcDate.getHours()-8);
var usDate = new Date(utcDate);
console.log(usDate);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的快速修复方法,但并非总是-8小时对吗?日光节约时间 (6认同)

clo*_*ure 4

建议您查看 DateJS http://code.google.com/p/datejs/http://www.datejs.com/。为您处理 PDT。

这是您的替代方案:

使用:Date.UTC(年、月、日、时、分、秒、毫秒)

示例:太平洋标准时间 2013 年 1 月 1 日上午 6 点

var date = new Date(Date.UTC(2013, 0, 1, 14, 0, 0))   
console.log(date.toUTCString());  
Run Code Online (Sandbox Code Playgroud)

打印:“2013 年 1 月 1 日星期二 14:00:00 GMT”

  • -1 表示 datejs。这是一个死库,有很多错误,而且没有可预见的未来。 (5认同)
  • 为什么这个答案被接受?这个问题明确指出了 UTC 到 PST,但这个答案提出了完全相反的!!! (4认同)