2014-10-07 53 views
0

我做的JS以下獲得時間字符串:得到一個HH的哈克的方式:MM:在javascript SS時間字符串

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

所有我需要的是這個字符串(絕對不'需要像moments.js一樣的東西)。當谷歌搜索沒有看到任何人這樣做。我在這裏做什麼有沒有嚴重的缺點?可能存在的問題?

+0

有趣的感謝信息我不知道。我們是否知道任何實際上實現這一點的瀏覽器,或者如果他們希望沒有違規,他們就可以實現這一點? – red888 2014-10-07 14:56:51

+0

很高興知道謝謝。你能回答我的問題與這個信息,所以我可以標記爲答案?我會考慮您提供的問題的完整答案。 – red888 2014-10-07 15:09:55

回答

2

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

問候的toTimeString method的返回值是ECMAScript中5指定:

字符串的內容是依賴於實現的,但旨在表示「時間「日期在當前時區中的部分,以方便的,人類可讀的形式。

瀏覽器或環境可以合法生產,將打破你的方法的格式,因爲toTimeString結果是完全依賴於實現。例如,不使用前導零,或省略秒,或使用AM/PM而不是24小時時間等。

我不知道是否全部環境使用相同的格式,但我會假設大多數選擇ISO 8601格式,因爲還有其他指定的功能(如toISOString),無論如何都需要ISO格式。根據的錯誤的責任,在罕見的情況下,一些環境出現,這不適合你的代碼,我會說你的代碼將依靠非標準行爲是錯誤的。

相比之下,toISOstring返回值是standardized as YYYY-MM-DDTHH:mm:ss.sssZ(總是文字T,在UTC的情況下,文字Z),但它可能不會幫助你在這裏,因爲它總是使用UTC時區,而不是本地環境時間。

0

您也可以使用split以HH:MM:SS格式獲取時間。 所以.toTimeString()你得到一個字符串,但這不應該是壞的。 您的/我的方法沒有嚴重的缺點。從維也納

+1

這是如何回答這個問題的? – 2014-10-07 15:04:39

+0

有人用這種方法回答了我的問題。他們對它進行了測試,結果發現速度可以忽略不計:http://jsperf.com/split-vs-substring-so。分割更安全嗎?我不認爲它更具可讀性。 – red888 2014-10-07 15:07:39

+0

所以我不認爲這種速度差異可能會被注意到。我的方法(和其他人)只是另一種獲得這種方法的方法,你想要什麼。你可以使用它們兩個。 – Bernd 2014-10-07 15:11:34

相關問題