Javascript 保存更改时发送错误的日期值
我面临着Breezejs和date对象的问题 详情如下: 我的服务器上有一个与客户端交换的对象:Javascript 保存更改时发送错误的日期值,javascript,date,datepicker,breeze,Javascript,Date,Datepicker,Breeze,我面临着Breezejs和date对象的问题 详情如下: 我的服务器上有一个与客户端交换的对象: public class Transaction{ ... public DateTime? DueDate{get;set;} ... } 客户端在momentjs的帮助下设置了这样的日期 transaction().dueDate(moment(dateString(),"DD-MM-YYYY").toDate()); 在下面的内容中,用户将tra
public class Transaction{
...
public DateTime? DueDate{get;set;}
...
}
客户端在momentjs的帮助下设置了这样的日期
transaction().dueDate(moment(dateString(),"DD-MM-YYYY").toDate());
在下面的内容中,用户将transaction.dueDate设置为2014年9月26日。
调试器如下所示显示这些字段的值:
dateString() = "26-09-2014"
moment(dateString(),"DD-MM-YYYY") = "Fri Sep 26 2014 00:00:00 GMT+0200"
moment(dateString(),"DD-MM-YYYY").toDate() = "Fri Sep 26 2014 00:00:00 GMT+0200"
transaction().dueDate() = "Fri Sep 26 2014 00:00:00 GMT+0200"
transaction().dueDate(moment(dateString(),"DD-MM-YYYY Z").toDate());
^
到目前为止,一切顺利。日期设置正确,breeze对此很满意
问题
将更改保存到服务器时,发生了一些有趣的事情!Breeze没有向服务器发送2014年9月26日,而是发送2014年9月25日
顺便说一下,我用的是微风1.4.11
编辑-解决方案
在阅读了几篇关于不同浏览器中如何处理“良好”视觉日期的文章后,我想到在创建日期对象时为mommentjs指定本地时区,如下所示:
dateString() = "26-09-2014"
moment(dateString(),"DD-MM-YYYY") = "Fri Sep 26 2014 00:00:00 GMT+0200"
moment(dateString(),"DD-MM-YYYY").toDate() = "Fri Sep 26 2014 00:00:00 GMT+0200"
transaction().dueDate() = "Fri Sep 26 2014 00:00:00 GMT+0200"
transaction().dueDate(moment(dateString(),"DD-MM-YYYY Z").toDate());
^
这似乎解决了这个问题
为什么breeze会在保存更改时更改日期值的问题仍然没有答案。breeze不会更改日期的值,它只是将日期设置为适当的格式。文档就是这么说的。为什么breeze发送2014年9月25日,而可观测属性被正确设置为2014年9月26日?这里的日期已经改变了,我认为这不仅仅是格式上的改变。