我有一个日期范围选择器,每个日期选择器有两个字段:dat_start和date_end; 一切都很好,除了我将传递给服务器进行搜索的字段的时间戳;我知道JS Timestamp是以ms为单位,但我应该有/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>
感谢大家,抱歉我的英语不好!
答案 0 :(得分:9)
获取选择器选择的字符串/日期并将其转换为日期:
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/
要在日期选择中执行此操作,请修改datepicker选项中的onSelect
回调函数。
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',
...
});