在javascript中获取HH:MM:SS时间字符串的一种hacky方式

时间:2014-10-07 14:44:49

标签: javascript datetime

我在js中执行以下操作以获取时间字符串:

(new Date()).toTimeString().substring(0, 8)

我需要的只是这个字符串(绝对不需要像moment.js那样的东西)。谷歌搜索没有看到有人这样做。我在做什么有任何严重的缺点和可能的问题吗?

2 个答案:

答案 0 :(得分:2)

toTimeString method的返回值在ECMAScript 5中指定:

  

String的内容是依赖于实现的,但是用于以方便的,人类可读的形式表示当前时区中Date的“time”部分。

浏览器或环境可以合法地生成一种会破坏您的方法的格式,因为toTimeString的结果完全取决于实现。例如,不使用前导零,或省略秒,或使用AM / PM而不是24小时等,等等。

我不知道所有环境是否使用相同的格式,但我认为大多数都选择ISO 8601格式,因为还有其他需要ISO的指定函数(如toISOString)格式化无论如何。就错误责任而言,在极少数情况下会出现一些与您的代码不兼容的环境,我会说您的代码依赖于非标准行为会出错。

相比之下,toISOstring的返回值为standardized as YYYY-MM-DDTHH:mm:ss.sssZ(始终为文字T,在UTC的情况下为文字Z),但它可能对您没有帮助,因为它总是使用UTC时区而不是本地环境时间。

答案 1 :(得分:0)

您还可以使用拆分来获取HH:MM:SS格式的时间。 所以使用.toTimeString()你得到一个字符串,但这不应该是坏的。 你/我的方法没有严重的缺点。

alert(new Date().toTimeString().split(' ')[0]);
//Because newDate().toTimeString() results 'HH:MM:SS GMT...' 
//split it and take the first item of the array 

来自维也纳的问候