Date.toLocaleString() 的 Chrome 时区选项

2024-06-22

我最近发现 JavaScript 有一个新的扩展。这增加了几个功能Date对象在toLocaleString, toLocaleDateString and toLocaleTimeString功能。参考这里 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString.

我特别感兴趣的是timeZone选项,支持IANA/奥尔森时区 http://www.iana.org/time-zones, 例如America/New_York or Europe/London. 目前仅 Google Chrome 支持此功能.

之前的建议是,要在 UTC 或您自己的本地时区以外的任何其他时区中使用 JavaScript,必须使用图书馆 https://stackoverflow.com/a/15171030/634824。但现在,这似乎开始直接合并到浏览器中。所以现在你可以这样做:

new Date().toLocaleString("en-US", {timeZone: "America/New_York"})

// output: "7/4/2013 5:15:45 PM"

Or:

new Date().toLocaleString("en-NZ", {timeZone: "Pacific/Chatham",
                                    timeZoneName: "long"})

// output:  "7/5/2013 9:59:52 AM GMT+12:45"

Or:

new Date().toLocaleString("en-GB", {timeZone: "Europe/London",
                                    timeZoneName: "short"})

// output:  "4/7/2013 22:18:57 United Kingdom Time"
// (strange time zone name, but ok)

This is very很酷,但我有几个问题:

  • 这是新标准的一部分吗?也许埋藏在 ECMAScript 6 的某个地方?或者这只是 Chrome 的自定义功能?
  • 为什么只有谷歌浏览器?其他地方支持吗?是否有计划在其他地方支持它?
  • 我检查了node.js,它使用Chrome的JavaScript运行时,但它在那里不起作用。为什么不?
  • 除了我列出的函数之外,是否可以通过其他方式访问时区数据?如果仅在格式化字符串时可用,那么根据结果进行任何计算可能会很困难。
  • 这里重点关注输出,但是我如何将它用于输入呢?有没有办法将构造函数中的时区传递给Date目的?我尝试了以下方法:

    // parsing it with a date and time
    new Date("2013-01-01 12:34:56 America/New_York")
    
    // passing it as a named option
    new Date(2013,0,1,12,34,56,{timeZone:"America/New_York"})
    

    两者都不起作用。我在规格中找不到任何内容,所以我认为这还不存在,但请告诉我我是否错了。

  • 中描述的问题这个帖子 https://stackoverflow.com/q/16946002/634824由 ECMAScript 5 规范中的缺陷创建的错误仍然会影响输出,即使 TZD​​B 中存在正确的数据。新旧实现是如何共存的?人们可能会认为这要么是旧方式,要么是新方式。例如,我的计算机的时区设置为美国东部时间:

    new Date(2004,10,7,0,0).toLocaleString("en-US",{timeZone:"America/New_York"})
    

    returns "11/6/2004 11:00:00 PM"。它应该返回午夜,因为我是在午夜开始的,并且我的本地时区与输出时区相匹配。但由于 ES5 问题,它将提供的输入日期置于错误的 UTC 点。

  • 我是否可以预期,当 IANA 发布 TZDB 更新时,Google 将推送包含这些更改的 Chrome 更新?


update

关于 API 有相当多的文章here http://generatedcontent.org/post/59403168016/esintlapi


这是新标准的一部分吗?可能埋藏在 ECMAScript 的某个地方 6?或者这只是 Chrome 的自定义功能?

是的,这些是其中的一部分ECMAScript 国际化 API http://www.ecma-international.org/ecma-402/1.0/。它与 ECMAScript 分开实现,但实现 ECMAScript 国际化 API 的要求是首先正确实现 ECMAScript 5.1

为什么只有谷歌浏览器?其他地方支持吗?有计划吗 在其他地方支持它?

近年来,谷歌浏览器大多是第一个实现新功能的。 Mozilla 比较保守,仍然比如讨论是否实施download的属性a元素。现在可以在IE11测试版 http://msdn.microsoft.com/en-us/library/dn305667(v=vs.85).aspx and Opera https://stackoverflow.com/questions/17478086/chrome-timezone-option-to-date-tolocalestring#comment26240547_17478810也。它将在火狐25 https://bugzilla.mozilla.org/show_bug.cgi?id=853301#c34.

我检查了node.js,它使用Chrome的JavaScript运行时,但它 在那里不起作用。为什么不?

Node.js 只是使用相同的引擎,即一个单独的项目 http://v8.googlecode.com来自 Google Chrome 浏览器。该引擎仅实现 Ecmascript 5.1。这是 Node.js 现在必须单独实现的扩展。它将在以下时间推出:V8 in Q3 https://code.google.com/p/v8-i18n/大概过了一会儿你就可以在node.js 中使用它了。

这里重点关注输出,但是我如何将它用于输入呢?有没有 将构造函数中的时区传递给 Date 对象的方法?我 尝试了以下方法:

规范中没有关于输入日期的内容。我个人不明白这有什么用处,如果您不传输 UTC 时间戳,那么您就做错了,因为类似"2013-01-01 12:34:56 America/New_York"从 DST 转换到标准时间期间不明确。

这篇文章中描述的问题是由 ECMAScript 中的缺陷造成的 5 规范,仍然影响输出,即使正确的数据位于 TZDB。

这是输入问题,而不是输出问题。同样,使用您无法影响或检测到的本地时区构建日期是错误的。使用时间戳构造函数重载或Date.UTC.

我能否期望当 IANA 发布 TZDB 更新时 Google 会推送包含更改的 Chrome 更新吗?

规范中没有任何内容,但我认为可以合理地预期规则不会落后太多。

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

Date.toLocaleString() 的 Chrome 时区选项 的相关文章

  • 在 JavaScript 中使用 Array.map 删除元素

    我想使用以下方法过滤一系列项目map 功能 这是一个代码片段 var filteredItems items map function item if some condition return item 问题是过滤掉的项目仍然使用数组中的
  • 使用 IE 11 和 AngularJS 的 2 路数据绑定问题

    我最近在使用 AngularJS 的 Web 应用程序上构建了一个功能 但在 IE 11 上遇到了一些问题 apply 将数据更改写入 DOM 由于某种原因 这种情况仅有时发生 而当我尝试调试问题时却从未发生 这使得它看起来像是一个计时问题
  • 客户端 GitHub 身份验证

    我正在使用 Javascript 对 GitHub 进行基本身份验证 例如 以下 shell 命令从 Github 获取令牌 curl i u uaername password k d scopes repo https api gith
  • 使用 mongoDB 插入子文档

    我收集了以下文件 id 2 workspace name 1 widgets name 2 widgets name 3 widgets name 4 widgets 我怎样才能插入 id 1 blabla blabla 在 小部件 中的
  • 将值传递给映射函数 - CouchDB

    我想知道是否可以将值传递给 couchDB 设计文档中的映射函数 例如 在下面的代码中 可以传递用户输入的值并使用该值来运行地图函数 也许我可以传递用户UserName当他们登录时 然后根据地图功能显示视图 function doc if
  • 设置三个输入数字的最大值

    我有三个输入数字
  • 将jQueryUI datepicker附加到div(显示位置错误)

    我在输入上使用 jQueryUI datepicker 默认情况下 jQueryUI 会附加 ui datepicker div to the body该文件的 有问题的输入位于屏幕上的 弹出 div 中 这意味着该 div 之外的任何点击
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • javascript 中的工厂模式与构造函数模式[关闭]

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

    我想在我的传单地图上显示热图 我使用了 heatmap jshttps github com pa7 heatmap js https github com pa7 heatmap js但它最终只是显示 未捕获的类型错误 无法分配给只读属性
  • 提交外部有 INPUT 的表单,并修改值后

    我有一个form 有几个
  • 如何使用javascript将数据存储在xml文件中?

    我是 javascript 新手 并在我的项目中使用它 因为我需要读取 xml 文件 然后在操作后我想将更新后的值存储回 xml 文件中 我成功从 xml 文件获取值 但无法存储值返回到 xml 文件 这是我尝试过的代码
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 为什么我的数据没有存储到我的 Firebase 实时数据库中?

    我正在尝试为网络应用程序制作一个注册页面 这会将数据发送到 firebase 数据库 我已阅读官方 firebase 文档并按照说明写入数据 但什么也不会写 在我的数据库控制台中 它显示的所有内容都是空 而不是我的数据 我没有收到控制台错误
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • 如何从 Instagram 的 media_preview 原始数据重新创建预览?

    如果您从 Instagram 的 API 获取 JSON 数据 您会发现media previewkey 其值是一些 Base64 编码的数据 它看起来确实像一些非常小的预览二进制数据 也许是压缩的 Take 这个帖子 https www
  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用
  • 多个引导模式的滚动问题

    我有一个带有大量信息的模态页面 因此您需要滚动 该模式包含指向第二个模式的链接 When I 打开模态 1 单击链接打开模式 2 模式 1 保持在后台 然后关闭模式 2 以便我回到模式 1 modal 1 失去滚动 仍然有一个滚动条 但它不
  • 即使切换它时,hasClass 也始终返回 false

    我有以下代码
  • chrome中使用jquery的图像高度问题

    img height 回报0在 Chrome 中 但在 IE 和 Firefox 中返回实际高度 在 Chrome 中获取图像高度的实际方法是什么 正如 Josh 提到的 如果图像尚未完全加载 jQuery 将不知道尺寸是多少 尝试这样的操

随机推荐

  • 从多维数组的子数组中删除不需要的元素

    我有一个像这样的多维数组 id gt 1 name gt John address gt Some address 1 city gt NY id gt 2 name gt Jack address gt Some address 2 ci
  • HtmlAgilityPack 删除选项结束标签

    我正在使用 HtmlAgilityPack 我使用以下字符串创建 HtmlDocument 和 LoadHtml
  • 使用两个变量的内容并将其作为一个变量使用

    这可能是一个非常基本的问题 但我真的不明白发生了什么 如果我有几个varJavascript 中的 s 如下所示 var cube1 paper rect 200 200 0 0 var cube2 paper rect 300 200 0
  • 操作系统如何努力尽量减少 TLB 刷新?

    我想知道操作系统中是否实现了一种通用机制来最小化 TLB 刷新 例如将同一进程中的线程分组到 待调度 列表中 我认为在决定使用进程还是线程时 这是一个重要因素 如果操作系统不关心下一个线程是否在同一个进程空间中 那么所谓的线程 最小化 TL
  • 使用Gluon插件部署一个android apk然后所有的汉字都不会消失

    我使用多视图项目 FXML 创建了一个gluon项目 然后我只需将按钮字符修改为中文 该项目在桌 面下运行没有问题 但是使用 android gt android 部署 apk 当安装在 android 手机或 andorid 模拟器上并运
  • C# 3.0 从字符串中删除字符

    我有一根绳子 要做什么 删除除所有英文字母 a z 之外的所有字符 用单个空格替换所有空格序列 您将如何使用 C 3 0 做到这一点 正则表达式 已编辑 string s lsg A tSd 2 R3 ad note tab s Regex
  • 未选择任何内容时如何设置 JComboBox 的标题?

    我想在我的 Swing 应用程序中有一个 JCombobox 它在未选择任何内容时显示标题 像这样的事情 国家 Spain德国爱尔兰 我希望 COUNTRY 在所选索引为 1 时显示 因此用户将无法选择它 我尝试将其放在第一个插槽上 然后覆
  • 如何在 Coq 中定义 N 个元素的有限集?

    对于通用参数 N nat 如何定义 N 个元素的有限集 A 0 A N 1 有没有一种优雅的方法可以通过递归定义来做到这一点 有人能给我指出推理此类结构的好例子吗 一个非常方便的解决方案是定义n第 3 个序数词 I n作为记录 Record
  • C# 对象到 XML

    我正在创建一个需要将 C 对象转换为 XML 的应用程序 我正在使用 XML Serializer 类来实现此目的 这是代码片段 public class Anwer public int ID get set public string
  • 在 VBScript 中将 IF 语句拆分为多行

    我想知道在 VBScript 中我是否可以打破If多行语句 喜欢 If UCase Trim objSheet Cells i a Value YES Or UCase Trim objSheet Cells i b Value NO Th
  • 为什么 gcc 和 clang 会为此程序产生不同的输出? (转换运算符与构造函数)

    program include
  • 正则表达式 Django url

    你好 我有一个 url 我想匹配 uuid 网址如下所示 移动 移动事物 68f8ffbb b715 46fb 90f8 b474d9c57134 urlpatterns patterns mobile views url r someth
  • jsf 在方法表达式中传递参数在 ViewScoped bean 中失败

    我有一个由 ViewScoped bean 支持的 jsf 页面 其中列出了一堆事务 如下所示
  • 在 C 中用数组制作 switch 语句?

    我正在尝试制作一个 switch 语句 将一个单词放入数组中 然后通过 switch 语句抛出每个字母 并根据每个字母是哪个字母为每个字母分配一个点 并给出该单词的最终点值 我似乎无法正确获取数组部分 任何帮助 将不胜感激 int main
  • Kdiff3 无法使用 mergetool 命令打开

    我有冲突 所以我输入 git mergetool 然后我收到一条消息说 按回车键启动合并解析工具 通常 当我这样做时 它会打开 kdiff3 以便我可以合并差异 现在 当我这样做时 它只是继续到下一个文件 并且 kdiff3 根本不打开 我
  • 打开 localhost 时权限被拒绝

    我最近在 Ubuntu 中安装了 Apache PHP 和 MySQL 并将我创建的文件复制到var www目录 但当我打开http localhost它正在显示 警告 未知 无法打开流 第 0 行未知中的权限被拒绝 致命错误 未知 无法打
  • PHP无法回显数据

    我正在尝试从数据库获取数据 并使用它们的唯一 ID 在页面上回显它们 下面是我的代码
  • 页面刷新时随机更改 HTML 背景

    我知道这个主题已经被浏览了很多次 但我希望我的主页随机选择一个图像 然后更改该图像的副标题 我的网站的网址是 http www connorloughlin com http www connorloughlin com 页面底部有一个小标
  • Pandas 按名称对列进行排序

    我有以下数据框 我想根据名称对列进行排序 1 13 1 13 10 13 2 2 3 9 31 2 1 3 4 我尝试按以下方式对列进行排序 1 2 3 13 1 13 2 13 10 9 3 4 31 1 2 我一直在尝试使用解决这个问题
  • Date.toLocaleString() 的 Chrome 时区选项

    我最近发现 JavaScript 有一个新的扩展 这增加了几个功能Date对象在toLocaleString toLocaleDateString and toLocaleTimeString功能 参考这里 https developer