私は自分のフォームに、ユーザが日付を選択するためにJqueryUI
datepicker
を使用しているいくつかの日付フィールドを持っています。ユーザーが日付を選択すると、日付はdd/mm/yy
形式で表示されます。私は、クライアント側でデータバインディングを管理するためにKnockoutJS
を使用してJqueryUI
datepicker
ため、次のKO
結合ハンドラ使用しています:それはinput
text
フィールドにdd/mm/yy
形式で正しく表示され、ユーザーが日付を選択したときにユーザーがタイムゾーンなしで日付を選択しました
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);
}
}
};
をし、 javascript
Date
オブジェクトがタイムゾーンとともに、KO
observable
にキャプチャされています。私はko.toJSON()
関数を使用して、さまざまな日付フィールドを含む複合体javascript object
全体をJSON
文字列に変換し、それをバックエンドでデシリアライズしています。 javascript
Date
オブジェクトがJSON
文字列に変換されたときに
私が直面しています問題は、それは私が想定しています、ユーザが選択した日付が原因でローカルタイムゾーンであり、これはjavascriptの日付オブジェクトのデフォルトの動作ですから1日が減少しています。私も、次のコードを使用して、選択した日からUTC
日付を取得するmomentJs
ライブラリを試してみましたが、これは動作していないよう:
moment.utc(selectedDateObject).toDate()
私が欲しいものは何でも、日付、ユーザが使用してフォームで選択し取得することですタイムゾーンのない日付ピッカー、平易でシンプル。これについてどうすればいいですか? Date
オブジェクトがJavaScriptで不必要に複雑になるようです。
モーメント(selectedDateObject).format( 'L')のような何かをする必要があります - このヘルプをすることができますか? – Shrabanee
@ titi23これはうまくいきません。私が 'ko.toJSON()'を呼び出すと、選択した日付から1日が短縮されます... – seadrag0n
あなたの手助けをするのが難しいので、いくつかの作業コードを表示できますか? JavascriptのgetUTCDate()を使用してみましたか? – Shrabanee