如何将 javascript 日期转换为特定时区

2023-12-11

我正在获取以毫秒为单位的日期信息。我能够正确解析它。但是当我更改电脑时区时,解析的时间也会更改。我只想到一个特定的时区。

EX.

Time in millisec: 1461645900000
Actual Parsed: 26-Apr-2016 10:15:00 IST

当电脑时区改变时,它变成:Tue Apr 26 2016 14:15:00 GMT+0930 (Local Standard Time)

这里我只想要实际时间。如何获得?

这是我的小尝试:

function parseDateTime(dt, format) {
    var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
            "Sep", "Oct", "Nov", "Dec" ];
    var ret = "";
    if (dt) {
    var day="",month="",year="",hour="",mins="",secs="";
        var d = new Date(dt)
        var os=d.getTimezoneOffset();
        if(os<0){

        }
        ret += d.getDate() + "-" + months[parseInt(d.getMonth())] + "-"
                + d.getFullYear() + " " + leftPad(d.getHours(), 2, "0") + ":"
                + leftPad(d.getMinutes(), 2, "0") + ":"
                + leftPad(d.getSeconds(), 2, "0");
    }
    document.getElementById("d1").innerHTML=ret;
    console.log(ret);
}
function leftPad(number, targetLength, withWhat) {
    var output = number + '';
    while (output.length < targetLength) {
        output = withWhat + output;
    }
    return output;
}
parseDateTime(1461645900000);

我用过 new Date().toLocaleString("en-US", {timeZone: ""}) 但有限制。我对新库也不感兴趣。


您对之间的区别感到困惑times and 陈述次。只有一个时间1461645900000。宇宙中任何地方都一样。这是一个神奇的时刻,星星以某种方式排列,宇宙正处于其发展的一个特殊时刻。

时区是以下函数代表一个约会。如果我住在东京,我可能更喜欢在东京时间查看我的时间。如果我住在加利福尼亚州,我可能更喜欢在加利福尼亚州时间看到我的时间。这种本地时间表示由本地时间和相对于 UTC 的偏移量组成,因此可以正确解释。

当你在 JS 中打印或输出日期时,它会像通常那样被转换为字符串,当然,该字符串作为一种表示,必须相对于地球上的某个地方——换句话说,相对于某个地方抵消。默认的 JS 行为是使用本地计算机上设置的当前位置的偏移量。这就是为什么如果您的计算机设置为印度时间,您会看到类似“Tue Apr 26 2016 10:15:00 GMT+0530(印度标准时间)”的内容。你也可以尝试date.toISOString这将为您提供“2016-04-26T04:45:00.000Z”(“Z”表示 UTC),或者date.toUTCString,这将忽略您的本地时区并给出相对于 UTC 的时间,如“Tue, 26 Apr 2016 04:45:00 GMT”。

为了完整起见,人们通常会混淆offsets and 时区。时区是特定区域随时间推移的所有偏移量(可能会发生变化,例如夏令时)的完整历史记录。实际上有数百个不同的时区,其中包括 1929 年取消夏令时的印第安纳州某个城镇的时区。如果您想管理时区数据,则必须将其与时间本身分开处理。即使您碰巧有偏移量,也没有办法唯一地从偏移量到时区 - 例如,加利福尼亚州和智利是不同的时区,但偏移量都是 -08:00。要正确管理时区,您将必须使用某种特殊的时区包。

我经常听到人们说他们“想改变时区”。您无法更改时间的时区。时间本身没有时区,它们只是宇宙钟上的时间。你能做的就是改变表示时间以便相对于特定偏移量。例如,您可以使用date.toLocaleString正如你所尝试的那样。您认为它的“局限性”是什么?

> new Date().toLocaleString("en-US", {timeZone: "America/Los_Angeles", timeZoneName: "long"})
< "11/3/2016, 8:33:02 AM Pacific Daylight Time"

您还可以使用timeZoneName: "short",这将产生“PDT”。但是,“PDT”或“PST”或“IST”或其他任何内容都不能用作timeZone选项,因为这些三个字母的缩写不是唯一的。例如,“PST”也可能表示“皮特凯恩标准时间”。

您尝试过的格式,给出timeZone作为空字符串,将不起作用(产生无法识别的时区错误)。

如果你想给出一个诸如“IST”之类的字符串怎么办?如上所述,这是行不通的;您必须找到一种将“IST”映射到“亚洲/加尔各答”的方法,这将需要某种图书馆。如果你想指定某种偏移量怎么办?同样,您将需要某种可以从偏移量推断时区的库。

最重要的是,如果您发现自己正在解析日期、调整这个或那个组件,并使用字符串算术将其拼凑在一起,那么您就做错了或不必要的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 javascript 日期转换为特定时区 的相关文章

  • Angular 2 TypeError:无法读取 null 的属性“animate”

    我正在使用 Chrome 51 和 Angular 2 rc4 并在加载我的 Angular 应用程序时在控制台中弹出以下错误 TypeError Cannot read property animate of null at e supp
  • 如何在 Jasmine JS 中重用 beforeEach/afterEach?

    当使用 JasmineJS 编写测试时 我有许多具有类似 beforeEach afterEach 代码的测试 有没有办法使用 JasmineJS 测试套件实现继承模型 我可以将所有测试分组为一个describe但在这种情况下 我将以包含所
  • Webpack、Sass - 超出最大调用堆栈大小

    我正在为我的 JS 应用程序使用 Webpack 对于样式 我使用 Sass 我的应用程序非常大 所以我使用了很多 mixins 和 includes 在过去的几天里 虽然应用程序的 SASS 数据增长了一些 我多次遇到相同的以下错误 未捕
  • 通过标记或JS强制下载

    假设我在 CDN 来自 Rackspace 的云文件 上有一个文件 以及一个包含该文件链接的静态 html 页面 有什么方法可以强制下载此文件 以防止它在浏览器中打开 例如 mp3 我们可以让我们的服务器读取该文件并将相应的标头设置为 he
  • html/js 中从右到左和/或从上到下的文本?

    如何在浏览器中为用户输入创建从右到左和从上到下的文本字段 有没有本地方法可以做到这一点 或者也许有解决方法 从上到下可能像日语或象形文字 对于 RTL 文本字段 您可以使用 HTMLdir属性 如 ime Vidas 已经提到的 或 wit
  • 在 json 对象中执行 javascript 代码?

    有远吗 所以像这样 key1 val1 key2 val2 some code document getElementById someid innerHTML test 那么 some code 会在没有任何用户干预的情况下执行吗 No
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • 同心放射圆 d3

    我有一个等距值的数组 我用它来绘制同心圆 我想使用一种散发效果 本质上是 一旦最外面的圆的值超过最大值 就将其删除 并在中心添加一个新的圆来补偿 我不确定如何操作数据集来删除和添加新圆圈
  • Javascript CORS 图像/画布操作

    我正在尝试从另一个已配置为允许 CORS 的域检索图像 并操纵像素 然后我想显示结果并能够操纵结果 我可以在我请求的图像上使用 getImageData 和 toDataURL 所以我知道服务器部分可以工作 但是 当我尝试将图像的 src
  • 设置三个输入数字的最大值

    我有三个输入数字
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if
  • 如何在 Google 地图上旋转叠加图像?

    我正在尝试将一系列叠加层放置到 Google 地图上 我正在跟随地面覆盖层的示例代码 https developers google com maps documentation javascript examples groundover
  • javascript 中的工厂模式与构造函数模式[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我看到了关于 javascript 设计模式的教程 虽然教程很好 但它给我留下了很少的问题 正如我所见 工厂和构造函数产生相同的结果
  • 如何在传单地图上显示热图

    我想在我的传单地图上显示热图 我使用了 heatmap jshttps github com pa7 heatmap js https github com pa7 heatmap js但它最终只是显示 未捕获的类型错误 无法分配给只读属性
  • HTML 画布从 getImageData 返回“偏离一些”字节

    我找到getImageDataHTML 画布似乎返回不正确的字节值 我使用以下 Python 代码生成了 1x1 px 图像 from PIL import Image import numpy as np a np array 12 18
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • 如何使用 LocalDateTime 从 Java 8 中的字符串创建以毫秒为单位的长时间?

    我有一个输入日期格式yyyy MM dd HH mm ss SSS并以这种方式将其转换为 long SimpleDateFormat simpleDateFormat new SimpleDateFormat yyyy MM dd HH m
  • 如何拦截javascript中innerHTML的变化?

    我需要拦截网页内单元格内容的任何更改 以下代码显示 addEventListener 不起作用 function modifyText alert var el document getElementById mycell el inner
  • 如何使用 jQuery 解析 JavaScript 对象

    jQuery JavaScript 中用于解析 JSON 对象并返回键 值对的 foreach 等效项是什么 JSON 对象 是什么意思 JSON 是一种用于序列化对象的文本格式 如果要循环访问通过反序列化 JSON 字符串获得的对象中的属

随机推荐