【问题标题】:How to convert Date format如何转换日期格式
【发布时间】:2010-04-02 10:28:08
【问题描述】:

我现在将“2010 年 4 月 2 日星期五”作为日期,如果浏览器语言选择为英语,我想显示“04/02/2010”,如果浏览器语言选择为德语,则显示“02.04.2010”。 我想要的只是按照浏览器格式显示日期。

知道如何做到这一点吗?

【问题讨论】:

  • 你必须解析日期吗?还是它已经是一个日期值?
  • 它已经是一个日期值,但它采用服务器日期格式,我必须按照浏览器日期格式显示它。

标签: javascript globalization


【解决方案1】:

它很快就会变得复杂,最好的办法是找一个库来做。

例如,DateJS 是免费且开放的,它支持 150 种左右的语言环境,尽管每个语言环境都有不同的文件,如果您的输入始终是英文,这在转换输入格式方面可能会很麻烦.如果有机会您可以将输入更改为国际化的内容,例如 ISO 8601(more here 和 here),这将使输入的本地化变得更加容易。

【讨论】:

  • @T.J,所以没有内置支持,我必须学习使用 DateJS 或其他类似的 javascript?
  • @vinay_rockin:这取决于你对“内置”的定义。例如,您可以自己解析该字符串,然后使用 Date(year, month, day) 构造函数(这对您没有多大帮助)。解析日期字符串的唯一内置支持会查找 very 特定格式,不幸的是,请参阅规范的第 15.9 节(特别是 15.9.1.15 和 15.9.4.2):ecma-international.org/publications/standards/Ecma-262.htm(请注意,较旧的JavaScript 实现不支持 ISO 8601 的使用,并且需要更模糊的日期格式。)
  • Date(year,month ,day) 将再次给我“2010 年 4 月 2 日星期五”,现在如何显示为(mm/dd/yyyy 或 dd/ mm/yyyy 或类似的有其他分隔符,例如 :,- 而不是 /) 这是原始问题。
  • @vinay_rockin:因此我的评论“对你帮助不大”。 :-) 同样,您要么必须手动编码,要么使用库。我强烈建议使用库;没有必要重新发明轮子。
  • @T.J,知道我现在将使用其中一个库,看看效果如何。顺便说一句,非常感谢,如果您以后发现任何有用的东西,请告诉我。
【解决方案2】:
<html>
<body>
hi
<script>
var lang = navigator.language;
if (!lang) {
lang = navigator.userLanguage;
}
alert (lang);
if (lang.match (/^en/)) {
document.write ("04/02/2010");
} else if (lang.match (/^de/)) {
document.write ("02.04.2010");
} else {
document.write ("I give up");
}

</script>
</body>
</html>

【讨论】:

  • @Smack,所以你的意思是没有简单的出路,我应该检查针对更多受众的语言?
  • 您想要一个适用于所有语言的通用解决方案?我认为另一个答案看起来不错。
猜你喜欢
  • 2014-02-25
  • 2023-03-31
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2017-12-23
相关资源
最近更新 更多