在日期选择器到达 BST 之前,我有以下代码可以正常工作。
var i;
function showEventDates(date) {
for (i = 0; i < startDates.length; i++) {
if (date.getTime() == startDates[i]) {
return [true, 'eventDay'];
}
}
return [false, ''];
}
var startDates = new Array();
$("select.startdates").find("option").each( function() {
startDates.push(Date.UTC.apply(Date, this.value.split(",").map(Number)));
});
$('#mydate').datepicker({
beforeShowDay: showEventDates
});
在 BST 期间,行 if (date.getTime() == startDates[i]) {
返回 false,因为有一个小时的差异。
有什么办法可以使它们匹配吗?我认为这是不是 UTC 的日期选择器时间。
编辑:
select.startdates 中的一个选项示例是
<option value="2013, 2, 1">01/03/2013</option>
最佳答案
看起来日期选择器不返回 UTC 日期,而是返回本地日期(这实际上是 Javascript 中的默认值)。
将构建的日期转换为本地时间:
$("select.startdates").find("option").each( function() {
var d = Date.UTC.apply(Date, this.value.split(",").map(Number));
d = d + new Date(d).getTimezoneOffset() * 60000; // convert UTC to local
startDates.push(d);
});
通常,我会使用 new Date(year, month, day)
构造函数而不是 Date.UTC
函数,但您不能使用 应用
Date
构造函数。
如果您宁愿将 startDates 数组保留为 UTC,则需要将日期选择器的日期转换为 UTC:
function showEventDates(date) {
date = date - new Date(date).getTimezoneOffset() * 60000; // convert local to UTC
// for ...
}
注意:选择一种或这些方法中的另一种,而不是两种,否则你最终会遇到同样的问题......:-)
关于javascript - jquery datepicker getTime 不是 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14962222/