dijit.form.DateTextBox设置值

4 dojo

我有跟随dojo dojo Date文本类型的文本字段.

dojoType ="dijit.form.DateTextBox"required ="true"/>

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

dijit.byId('dtinv').attr('value',new Date(tList [i] .getAttribute("dtinv")));

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

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

pel*_*ler 5

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

(我在东部时区)

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

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

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

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