如何使用dojo将字符串解析为日期模式

时间:2010-05-18 19:29:15

标签: javascript date dojo

我的值为'05/17/2010' 我希望使用'May 17, 2010'将其设为dojo.date.locale。我尝试使用dojo.date.locale.parse,如下所示:

x = '05/17/2010'
var x = dojo.date.locale.parse(x, {datePattern: "MM/dd/yyyy", selector: "date"});
alert(x)    

这不会给我所需的日期模式。

我还尝试将模式替换为datePattern : "MMMM d, yyyy",但它返回null

3 个答案:

答案 0 :(得分:5)

dojo.date.locale.parse采用格式化字符串并返回Javascript Date对象。

var x = dojo.date.locale.parse('05/17/2010', {datePattern: "MM/dd/yyyy", selector: "date"});

当你说

alert(x);

使用Date.toString()方法将x强制转换为字符串,该方法因浏览器而异,但会为您提供类似于您所获得的输出 - 2010年5月17日00:00:00 GMT-0500(中部夏令时) )

如果您希望以特殊方式格式化日期,请将解析结果传递给具有特定日期格式的dojo.date.locale.format:

var y = dojo.date.locale.format(x, {datePattern:"MMMM d, yyyy", selector: 'date'});

答案 1 :(得分:1)

我不确定这是否有效 - 虽然在你最初声明x之后,在第二次设置之前没有分号。我把你的代码分成了三行:

var x = '05/17/2010';
x = dojo.date.locale.parse(x, {datePattern: "MM/dd/yyyy", selector: "date"});
alert (x);

也许这只是x最初未设定的问题?

答案 2 :(得分:1)

问题是您必须首先创建一个Date对象,然后然后您可以对其进行格式化,因为格式化函数将Date对象作为其第一个参数而不是一个字符串。因此,如果您执行以下操作,它将正常工作:

var x = new Date("05/17/2010");
x = dojo.date.locale.format(x, {datePattern: "MM/dd/yyyy", selector: "date"});
alert (x);