我有以下带有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日期框中显示的日期少一天。 有什么我应该注意的吗?
答案 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日期方法(如果在较新的浏览器中可用)。