gpt4 book ai didi

javascript - 在浏览器上本地化日期?

转载 作者:太空狗 更新时间:2023-10-29 15:39:30 24 4
gpt4 key购买 nike

假设我有一个可以用文化不变格式 (ISO 8601) 表示的日期。

我将选择 2009 年 7 月 6 日巴黎世界标准时间下午 3:54,也就是巴黎本地时间下午 5:54,遵守夏令时。

2009-07-06T15:54:12.000+02:00

好的...是否有任何隐藏的标记会告诉浏览器将该字符串转换为它的本地化版本?

最接近的解决方案是使用 Javascript 的 Date.prototype.toLocaleString()。它确实做得很好,但是迭代很多日期可能会很慢,而且它依赖于 Javascript。

浏览器是否可以识别并自动呈现正确的本地化字符串的任何 HTML、CSS、XSLT 或其他语义标记?

编辑:

我目前使用的方法是用本地化字符串替换 HTML 元素的文本:

开始于:

<span class="date">2009/07/06 15:54:12 GMT</span>

使用 Javascript(与 jQuery):

var dates = $("span.date", context);
// use for loop instead of .each() for speed
for(var i=0,len=dates.length; i < len; i++) {
// parse the date
var d = new Date(dates.eq(i).text());
// set the text to the localized string
dates.eq(i).text(d.toLocaleString());
}

从实际的 Angular 来看,当 Javascript 运行时,它会使文本“闪烁”到新值,我不喜欢它。

从原则的 Angular 来看,我不明白为什么我们需要这样做——浏览器应该能够本地化标准的东西,比如货币、日期、数字,只要我们这样标记它。


后续问题:为什么浏览器/Web 没有这么简单的功能 - 获取标准数据项,并根据客户端设置对其进行格式化?

最佳答案

我在我的网站上使用 toLocaleString(),我从来没有遇到过它的速度问题。您如何将服务器日期放入 Date 对象?解析?

我在显示服务器看到的日期之前添加了一个注释节点。评论节点内是该帖子的日期/时间,作为自纪元以来的毫秒数。例如,在 Rails 中:

<!--<%= post.created_at.to_i * 1000 %>-->

如果他们启用了 JS,我会使用 jQuery 来获取这些节点,获取评论的值,然后:

var date = new Date();
date.setTime(msFromEpoch);
// output date.toLocaleString()

如果他们没有启用 JS,他们可以随意在脑海中进行转换。

如果您正在尝试解析 ISO 时间,这可能是导致速度缓慢的原因。另外,我们说的是多少个日期?

关于javascript - 在浏览器上本地化日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com