1

私は、日付ピッカーごとに 2 つのフィールドを持つ日付範囲ピッカーを持っています: dat_start と date_end; 検索を行うためにサーバーに渡すフィールドのタイムスタンプを除いて、すべて問題ありません。JS タイムスタンプがミリ秒であることは知っていますが、/1000 にする必要があります...そして、その方法が見つかりません。これが私のコードです:

<script>
$(function () {
    $("#data_inizio").datepicker({
        altField: '#mod_available_date_id_start',
        altFormat: '@',
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 1,
        onSelect: function (selectedDate) {
            $("#data_fine").datepicker("option", "minDate", selectedDate);
        }
    });
    $("#data_fine").datepicker({
        altField: '#mod_available_date_id_finish',
        altFormat: '@',
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 1,
        onSelect: function (selectedDate) {
            $("#data_inizio").datepicker("option", "maxDate", selectedDate);
        }
    });
});
</script>

みなさん、ありがとう。下手な英語でごめんなさい!

4

1 に答える 1

10

ピッカーによって選択された文字列/日付を取得し、日付にキャストします。

var stringyDate = $("#data_inizio").val(); // mm/dd/yyyy
var dateyDate = new Date(stringyDate);

valueOf()(1970 年 1 月 1 日からのミリ秒数を返す) を取得し、1000 で割って [同じ] からの秒数を取得します。

var ms = dateyDate.valueOf();
var s = ms / 1000;

フィドルの例: http://jsfiddle.net/QpQ7U/

日付の選択時にこれを行うonSelectには、datepicker オプションでコールバック関数を変更します。

onSelect: function(selectedDate) {
    var v = $(this).val(),
        d = new Date(v);
    if (v.length > 0) {
        $('p#out').text(d.valueOf() + ' divided by 1000 is ' + (d.valueOf() / 1000));
    } else {
        $('p#out').text('No date selected');
    }
}

onSelect のフィドルの例: http://jsfiddle.net/QpQ7U/1/

非表示フィールドに値を格納するには、次のようにフィールドを指定するだけですonSelect

onSelect: function(selectedDate) {
    var d = new Date(selectedDate),
        s = parseSeconds(selectedDate);
    if (s > 0) {
        //display to user
        $('p#out_inizio').text(d.valueOf() + ' divided by 1000 is ' + s);
        //store in hidden field.
        $('input#out_inizio').val(s);
    } else {
        $('p#out_inizio').text('No date selected');
    }
    //set min date on other picker
    $("#data_fine").datepicker("option", "minDate", selectedDate);
}

非表示フィールドのフィドルの例: http://jsfiddle.net/QpQ7U/2/

日/月/年としてフォーマットするには、次のdateFormatオプションを使用します。

$("#data_inizio").datepicker({
    altField: '#mod_available_date_id_start',
    altFormat: '@',
    dateFormat: 'dd/mm/yy',
    ...
});

フィドルの例: http://jsfiddle.net/QpQ7U/5/

于 2012-06-20T15:41:56.357 に答える