2017-03-10 122 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调用的第一个参数是“语言环境”,这是用词不当,因为它代表一种语言。

相关问题