2017-03-10 169 views
-1

我正在使用Javascript的Date()方法將ISO轉換爲可讀格式。未捕獲ReferenceError:localePreference未定義

formatIsoDate({date}) { 
    const options = { year: 'numeric', month: 'long', day: 'numeric' } 
    return new Date(dateString).toLocaleDateString(options) 
} 

render() { 
    return (
     <p>{formatIsoDate({date: this.props.date})}</p> 
    ) 
} 

,但我得到一個錯誤:

Uncaught ReferenceError: localePreference is not defined

我讀了Mozilla的MDN的文檔,但我看不到任何東西在那裏。它說toLocaleDateString區域設置的第一個參數是可選的。

+0

也許我不確定這個代碼的環境,但我不認爲它是有效的語法。 – jdbiochem

+0

你有一個polyfill的地方嗎? –

+0

你可以把更多的代碼。你是否在某處使用localePreference –

回答

0

console.log(new Date("11-11-11").toLocaleDateString({ year: 'numeric', month: 'long', day: 'numeric' }));

此語句正常工作對我來說,這樣的問題並不.toLocaleDateString()。我不確定這段代碼在語法上是否合理,也許你可以發佈更多內容來澄清。

+0

不,在這裏輸入你的控制檯'new Date(undefined).toLocaleDateString' –

+0

是的。嗯。我找不到localePreference沒有定義的錯誤。javascript的用法看起來很奇怪 - - ?「回報({{

東西}}

)」 – jdbiochem

+0

他使用react.js –

0

如果參數被提供給toLocaleString方法中,第一必須是RFC 5646語言標記,例如「fr」爲法語或「fr-acf」爲聖盧西亞克里奧爾語法語。語言和子標籤的完整列表是IANA,有用的資源是r12a >> apps >> Language subtag lookup。另見MDN

如果您不想指定的語言,使用不確定和瀏覽器默認將被使用:

function formatIsoDate(date) { 
 
    var options = { year: 'numeric', month: 'long', day: 'numeric' }; 
 
    return date.toLocaleDateString(undefined, options); 
 
} 
 

 
console.log(formatIsoDate(new Date));

並非所有的瀏覽器都支持的的toLocaleString選項,結果也取決於實現,用戶可能會根據他們使用的瀏覽器得到不同的結果。對我來說,Safari返回「2017年3月12日」,而Firefox返回「2017年3月12日」。

ECMA-402調用的第一個參數是「語言環境」,這是用詞不當,因爲它代表一種語言。

相關問題