2014-03-07 31 views
16

我想以24小時格式顯示時間字符串,並認爲它在TypeScript中很容易。但由於某些原因,我無法使用帶選項的Date.toLocaleTimeString()。任何想法爲什麼?它們在單獨的接口定義中定義。TypeScript中的DateTimeFormat

interface Date { 
    toLocaleString(locales?: string[], options?: Intl.DateTimeFormatOptions): string; 
    toLocaleString(locale?: string, options?: Intl.DateTimeFormatOptions): string; 
} 

另一種選擇是使用Intl.DateTimeFormat,但構造函數返回一個Collat​​or?

var DateTimeFormat: { 
    new (locales?: string[], options?: DateTimeFormatOptions): Collator; 
    new (locale?: string, options?: DateTimeFormatOptions): Collator; 
    (locales?: string[], options?: DateTimeFormatOptions): Collator; 

它是lib.d.ts中的複製粘貼錯誤(與NumberFormat相同)或我該如何使用它們?

希望這是一個簡單的修復,我對TypeScript很新,所以我可能錯過了一些東西。

+0

關於'Intl.DateTimeFormat'構造:是的,這似乎lib.d.ts中有一個錯誤。我在這裏報告了問題https://github.com/Microsoft/TypeScript/issues/1911#issuecomment-77737862 –

回答

25

這應該工作...

var displayDate = new Date().toLocaleDateString(); 

alert(displayDate); 

但我懷疑你想它在別的東西,例如:

var displayDate = Date.now.toLocaleDateString(); // No! 

alert(displayDate); 
+2

+1,因爲這是答案。然而關於他在做什麼,我認爲他正在嘗試'Date.toLocaleDateString'也許值得一提的是接口是* not *實例。 – basarat

+1

謝謝Bas - 我看不到導致問題的代碼行,但是你說得對'Date.toLocaleDateString()'不會像'Date.now ...'那樣工作。 – Fenton

+0

謝謝,我從json字符串(WebApi)獲取數據並使用toLocaleDateString,但我認爲問題在於Chrome中的語言設置爲英語(美國)(12小時制)。我的操作系統是瑞典語(24小時制),因此Chrome似乎擁有自己的本地化設置! – tengl