dijit.form.DateTextBox设置值

时间:2010-04-01 10:14:56

标签: dojo

我有以下带有dojo dojo日期文本类型的文本字段。

  

  的dojoType = “dijit.form.DateTextBox”   需要= “真”/>

我使用以下代码设置dijit.form.DateTextBox值

  

dijit.byId( 'dtinv')。ATTR( '值',新   日期(TLIST [I] .getAttribute( “dtinv”)))   ;

tList [i] .getAttribute(“dtinv”)的值为2010-04-02

设置值后,我会看到4/1/2010。始终在dojo日期框中显示的日期少一天。 有什么我应该注意的吗?

1 个答案:

答案 0 :(得分:5)

Dojo和Dijit处理当地时间的日期,而不是GMT,这本身可能是一个糟糕的设计选择,但如果你使用dojo.date.stamp.fromISOString()或传递字符串“2010-04-02”作为您的HTML中的value属性将在当地时间4月2日午夜到达。将它传递给Dijit,它会很开心。在Javascript中使用新的ES5 Date构造函数会有不同的结果:

(我在东部时区)

>>> new Date("2010-04-02")
Thu Apr 01 2010 20:00:00 GMT-0400 (EST) {}

用GMT定义日期。但是,以下对象与Dijit一样可以正常工作:

>>> new Date(2010, 3, 2)
Fri Apr 02 2010 00:00:00 GMT-0400 (EST) {}

此外,在使用字符串时,Javascript的新Date构造函数定义不明确。我不确定你得到的结果是否在所有浏览器中都是一致的。建议您使用dojo.date.stamp.fromISOString("2010-04-02")获取相应的Date对象或ES5 ISO日期方法(如果在较新的浏览器中可用)。