【发布时间】:2016-09-13 01:32:21
【问题描述】:
我的表单中有几个日期字段,我使用JqueryUI datepicker 供用户选择日期。当用户选择日期时,日期应以dd/mm/yy 格式显示。我正在使用KnockoutJS 来管理客户端的数据绑定,并为JqueryUI datepicker 使用以下KO 绑定处理程序:
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepickerOptions || { dateFormat: 'dd/mm/yy' };
$(element).datepicker(options);
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
observable($(element).datepicker("getDate"));
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).datepicker("destroy");
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
current = $(element).datepicker("getDate");
if (value - current !== 0) {
$(element).datepicker("setDate", value);
}
}
};
现在,当用户选择日期时,它会在 input text 字段中以 dd/mm/yy 格式正确显示,javascript Date 对象和时区一起被捕获在 KO @ 987654335@。我正在使用ko.toJSON() 函数将包含各种日期字段的整个复杂javascript object 转换为JSON 字符串并在后端对其进行反序列化。
我面临的问题是当javascript Date 对象转换为JSON 字符串时,它会从用户选择的日期减少一天,我假设这是因为本地时区,这是默认设置行为 javascript 日期对象。我还尝试了 momentJs 库使用以下代码从所选日期获取 UTC 日期,但这似乎不起作用:
moment.utc(selectedDateObject).toDate()
我想要的是使用 datepicker 获取用户在表单中选择的任何日期,没有任何时区,简单明了。我该怎么办? Date 对象在 javascript 中似乎变得不必要地复杂。
【问题讨论】:
-
moment(selectedDateObject).format('L') - 这对你有帮助吗?
-
@titi23 这不起作用...当我致电
ko.toJSON()时,从所选日期减少了一天... -
您能否展示一些工作代码,因为这种方式很难帮助您。必须尝试使用 Javascript 的 getUTCDate() 吗?
-
第二条上一条评论;帮助我们逐步重现问题,以便我们更轻松地为您提供帮助。
标签: javascript json date jquery-ui knockout.js