我正在使用 JavaScript Date 对象将毫秒转换为可读的 minutes:seconds
格式字符串。我需要它来为自定义视频播放器创建一个计时器,其中我的 JS 接口(interface)接收视频持续时间信息作为毫秒值。
在我决定支持制作超过 59 分钟的视频之前,这是一项相当微不足道的任务。然后我遇到了这个问题:当我向新的Date对象的构造函数提交一个毫秒值,然后调用getHours()
,即使毫秒数代表一段时间,它也会返回一些东西不到一个小时。看到这一点的最简单方法是喂它,比如 0。
我希望它返回 0,但它总是返回 12(在 Opera 中是 13,这使它更加奇怪)。这是正常行为还是错误?无论哪种方式,我如何可靠地检测我的毫秒值是仅限于分钟和秒还是还包括小时?
谢谢。
更新:
我已经在 OSX 上的 Chrome 15 和 Firefox 7 中对其进行了测试:结果与上面的屏幕截图相同。我不知道如何使用 Opera Dragonfly 控制台,但是从我看到的 Opera 中也发生了同样的事情,只是 getHours()
的值为 13。
我注意到,虽然人们告知用户如何修复他的代码,但他们并没有告知他如何按照他的要求去做。答案很简单。不要使用函数 getHours()。使用 getUTCHours()。这将绕过任何时区偏移。
如果您需要长达数天,您仍然会遇到问题,但在此之前,Date 原语可以很好地满足您的用途。
我是一名优秀的程序员,十分优秀!