Date.toString()的输出是否始终采用相同的格式?

时间:2013-08-02 01:24:29

标签: javascript date datetime

正如标题所要求的那样,Date.toString()(更准确地说,Date.toTimeString())的输出在所有浏览器中始终采用相同的格式吗?

我问这个,因为EMCAScript specification表示“字符串的内容依赖于实现”。


我需要确保这一点,因为我需要通过插入HTML span元素来格式化字符串,如下所示:

(new Date()).toTimeString().replace(" GMT", "<span id='offset'> GMT") + '</span>' );

这会产生(在Google Chrome v28.0.1500.95中)类似

的内容

18:19:26<span id="offset"> GMT-0700 (Pacific Daylight Time)</span>

然后我可以用CSS设置样式。


有关更好地设计输出样式的建议也很棒!

2 个答案:

答案 0 :(得分:3)

简而言之,不,toString并不总是输出相同的格式。

new Date().toString() 

打印

  • “2012年2月11日星期六02:15:10 GMT + 0100”在Firefox 10中
  • “星期六2012年2月11日02:18:29 GMT + 0100(欧洲标准时间)”在Chrome 16中
  • “2月11日星期二02:18:59 UTC + 0100 2012”在Internet Explorer 9中

我知道这些是较旧的浏览器版本,但它表明它依赖于浏览器。

然而,当使用toTimeString()时,它似乎始终以小时:分钟:秒[空格]开始......

因此,您可以根据第一个[空格]将字符串拆分为2个部分:

indexOf(" ")

然后用你的跨度

包裹第二部分

Moment执行日期的字符串格式化,但它也不能很好地处理您请求的偏移字符串,因为它取决于toString()方法。

我希望有帮助

答案 1 :(得分:-1)

Moment.js是一个很好的库,用于格式化JS中的日期。 https://github.com/moment/moment

否则是的,你最终会自己解析它,因为浏览器会以不同的方式呈现它。