Tom*_*Tom 7 javascript jquery jquery-ui utc jquery-ui-datepicker
我有以下代码,可以正常工作,直到datepicker达到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
});
Run Code Online (Sandbox Code Playgroud)
在BST期间,该行if (date.getTime() == startDates[i]) {返回false,因为有一个小时的差异.
我有什么想法可以让这些匹配?我认为这是不是UTC的日期选择时间.
编辑:
select.startdates中的一个选项示例是
<option value="2013, 2, 1">01/03/2013</option>
Run Code Online (Sandbox Code Playgroud)
看起来日期选择器不返回 UTC 日期,而是本地日期(这实际上是 Javascript 中的默认值)。
\n\n要将构建的日期转换为当地时间:
\n\n$("select.startdates").find("option").each( function() {\n var d = Date.UTC.apply(Date, this.value.split(",").map(Number));\n d = d + new Date(d).getTimezoneOffset() * 60000; // convert UTC to local\n startDates.push(d);\n});\nRun Code Online (Sandbox Code Playgroud)\n\n通常,我\xe2\x80\x99d使用new Date(year, month, day)构造函数而不是Date.UTC函数,但是你可以\xe2\x80\x99tapply与Date使用。
如果您\xe2\x80\x99d 宁愿将 startDates 数组保留为 UTC,那么您需要将 datepicker\xe2\x80\x99s 日期转换为 UTC:
\n\nfunction showEventDates(date) {\n date = date - new Date(date).getTimezoneOffset() * 60000; // convert local to UTC\n // for ...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n注意:选择一项或而不是两种,否则你\xe2\x80\x99最终会遇到同样的问题...:-)
\n| 归档时间: |
|
| 查看次数: |
15994 次 |
| 最近记录: |