我有幾個日期字段在我的表單中,我使用JqueryUI
datepicker
供用戶選擇日期。用戶選擇日期時應以dd/mm/yy
格式顯示日期。我使用KnockoutJS
來管理數據在客戶端的結合,並使用以下KO
爲JqueryUI
datepicker
結合處理:獲取用戶選擇的時區沒有時區
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);
}
}
};
現在,當用戶選擇的日期,它正確地顯示在dd/mm/yy
格式在input
text
場一個javascript
Date
對象與時區一起在KO
observable
中被捕獲。我正在使用ko.toJSON()
函數將包含各種日期字段的整個複雜javascript object
轉換爲JSON
字符串,並在後端對其進行反序列化。
我面臨的問題是,當javascript
Date
對象轉換爲JSON
串,它減少了從其中我假定用戶選擇日期1天是因爲當地時區的,這是默認行爲的javascript日期的對象。我也曾嘗試momentJs
庫使用下面的代碼從選定的日期UTC
日期但這似乎並沒有工作:
moment.utc(selectedDateObject).toDate()
我想是要什麼有什麼最新的用戶使用的形式選擇沒有任何時區的日期選擇器,簡單明瞭。我怎麼去解決這個問題?對象似乎在javascript中得到了不必要的複雜化。
時刻(selectedDateObject).format( 'L') - 這可以幫助你嗎? – Shrabanee
@ titi23這不起作用...當我打電話給'ko.toJSON()',有一天從選定的日期減少... – seadrag0n
你可以顯示一些工作代碼,因爲這樣幫助你很困難。必須嘗試使用Javascript的getUTCDate()? – Shrabanee