我使用jQuery datepicker,minDate为4,不包括周末和假日,并调整minDate以排除当天下午2点之后.现在我需要以某种方式考虑时区,因为我希望这基于我的时区,PT,而不是用户的时区.我知道我getTimeZoneOffset可能是一个可行的选择,但我正在努力与如何&将其添加到我当前的设置中的位置.
@H_403_2@<script type="text/javascript">
$(document).ready(function() {
//holidays
var natDays = [
[1,1,'New Year'],//2014
[1,20,'Martin Luther King'],//2014
[2,17,'Washingtons Birthday'],//2014
[5,26,'Memorial Day'],//2014
[7,4,'Independence Day'],//2014
[9,'Labour Day'],//2014
[10,14,'Columbus Day'],//2013
[11,11,'Veterans Day'],28,'Thanks Giving Day'],//2013
[12,25,'Christmas'] //2013
];
var dateMin = new Date();
dateMin.setDate(dateMin.getDate() + (dateMin.getHours() >= 14 ? 1 : 0));
AddBusinessDays(dateMin,4);
function AddBusinessDays(curdate,weekDaysToAdd) {
while (weekDaysToAdd > 0) {
curdate.setDate(curdate.getDate() + 1);
//check if current day is business day
if (noWeekendsOrHolidays(curdate)[0]) {
weekDaysToAdd--;
}
}
}
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) {
return [false,natDays[i][2] + '_day'];
}
}
return [true,''];
}
$('#datepicker').datepicker({
inline: true,beforeShowDay: noWeekendsOrHolidays,showOn: "both",firstDay: 0,dateformat: "dd/mm/yy",changeFirstDay: false,showButtonPanel: true,minDate: dateMin
});
});
</script>
<p>
<label for="datepicker">Desired Delivery Date: </label>
<input class="input-medium" type="text" id="datepicker" placeholder="ex. 01/01/2013" name="properties[Delivery Date]" readonly />
<label><font size=1>Need it faster? Please call us! (800) 880-0307</font>
</label></p>
<style>
#datepicker { height: 20px; }
#datepicker {-webkit-border-radius: 0 3px 3px 0; -moz-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0;}
</style>
解决方法
试试这个:
@H_403_2@var localTime = new Date();
var ptTime = new Date();
ptTime.setMinutes(ptTime.getMinutes() + localTime.getTimezoneOffset() - 420);
alert(localTime + ' ' + localTime.getTimezoneOffset() + ' ' + ptTime);