2010-04-01 6 views
4

J'ai le champ de texte suivant avec dojo dojo Type de texte de date.Valeurs de réglage de dijit.form.DateTextBox

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

J'utilise le code suivant pour définir la valeur dijit.form.DateTextBox

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

ListeT [i] .getAttribute ("dtinv") a une valeur 2010-04-02

Lorsque la valeur est définie, je vois 4/1/2010. Toujours la date dans la boîte de date du dojo montre un jour de moins. Y a-t-il quelque chose dont je devrais m'occuper?

Répondre

5

Processus Dojo et Dijit Dates à l'heure locale, pas GMT, ce qui peut être un mauvais choix de conception, mais si vous utilisez dojo.date.stamp.fromISOString() ou passez la chaîne "2010-04-02" comme attribut de valeur dans votre HTML, vous obtiendrez le 2 avril à minuit dans votre heure locale. Passe ça au Dijit et ce sera heureux. En utilisant le nouveau constructeur Date de ES5 en Javascript aura des résultats différents:

(je suis dans le fuseau horaire de l'Est)

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

qui définit une date GMT. Cependant, l'objet suivant fonctionnerait comme prévu avec Dijit:

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

De plus, le nouveau constructeur Date de Javascript est mal définie en matière de prise de cordes. Je ne suis pas sûr si le résultat que vous obtenez est cohérent dans tous les navigateurs. Il est conseillé d'utiliser dojo.date.stamp.fromISOString("2010-04-02") pour obtenir l'objet Date correspondant ou les méthodes de date ISO ES5, lorsqu'ils sont disponibles dans les navigateurs plus récents.

Questions connexes