我在js中执行以下操作以获取时间字符串:
(new Date()).toTimeString().substring(0, 8)
我需要的只是这个字符串(绝对不需要像moment.js那样的东西)。谷歌搜索没有看到有人这样做。我在做什么有任何严重的缺点和可能的问题吗?
答案 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
来自维也纳的问候