9

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

我问这个是因为EMCAScript 规范说“字符串的内容是依赖于实现的”。


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

(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 设置样式。


对输出样式的更好方法的建议也很棒!

4

2 回答 2

5

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

new Date().toString() 

印刷

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

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

但是,当使用toTimeString()它时,它总是以小时:分钟:秒[空格]开头...

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

indexOf(" ")

然后用你的跨度包裹第二部分

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

我希望这会有所帮助

于 2013-08-02T02:01:08.670 回答
-1

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

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

于 2013-08-02T02:12:10.490 回答