Javascript 返回倒计时计时器的下一个本地化日期
我有一段代码,可以计算出一个本地化的UTC时间。根据UTC时间,还有一个函数将为我计算下一个事件日期和时间。如果时间介于12日星期日和8日星期三之间,则会给我周三的活动日期,否则会给我周日的下一个活动日期。然后,我把计算出的日期分开,作为参数输入倒计时计时器 我想知道是否有更优化的方法来实现这一点,特别是使用条件语句,以及将时间分割为参数Javascript 返回倒计时计时器的下一个本地化日期,javascript,date,datetime,countdown,datetimeoffset,Javascript,Date,Datetime,Countdown,Datetimeoffset,我有一段代码,可以计算出一个本地化的UTC时间。根据UTC时间,还有一个函数将为我计算下一个事件日期和时间。如果时间介于12日星期日和8日星期三之间,则会给我周三的活动日期,否则会给我周日的下一个活动日期。然后,我把计算出的日期分开,作为参数输入倒计时计时器 我想知道是否有更优化的方法来实现这一点,特别是使用条件语句,以及将时间分割为参数 $(function () { // Calculate the time locally function calcLocalizedTime() {
$(function () {
// Calculate the time locally
function calcLocalizedTime() {
var d = new Date(); // Date for current location
var utc = d.getTime() + (d.getTimezoneOffset() * 60000); // convert to msec add local time zone offset get UTC time in msec
var nd = new Date(utc + (3600000 * -5));
return nd; // return localized datetime
}
// Calculate the next Webcast DateTime
function calcNextWebCast(date) {
var localizedTime = new Date(date||new Date()); // localized datetime
var nextDate = new Date(date||new Date()); // Next webcast datetime object
var today = localizedTime.getDay() + '' + localizedTime.getHours(); // format localized datetime for comparison
if (today >= 012 && today <=320 ) { // is today between Sun @ 12 or Wednesday @ 8
nextDate.setDate(nextDate.getDate() + (3 - 1 - nextDate.getDay() + 7) % 7 + 1);
nextDate.setHours(20,0,0,0);
} else {
nextDate.setDate(nextDate.getDate() + (3 - 4 - nextDate.getDay() + 7) % 7 + 1);
nextDate.setHours(12,0,0,0);
}
return nextDate;
}
var localizedTime = calcLocalizedTime();
var nextWebCast = calcNextWebCast(localizedTime);
var m = nextWebCast.getMonth() + 1;
var d = nextWebCast.getDate();
var y = nextWebCast.getFullYear();
var hh = nextWebCast.getHours();
var mm = nextWebCast.getMinutes();
$('#defaultCountdown').countdown({until: $.countdown.UTCDate(-5, y, m-1, d, hh, mm)});
});
$(函数(){
//本地计算时间
函数calcLocalizedTime(){
var d=new Date();//当前位置的日期
var utc=d.getTime()+(d.getTimezoneOffset()*60000);//转换为毫秒添加本地时区偏移量获取utc时间(毫秒)
var nd=新日期(utc+(3600000*-5));
return nd;//返回本地化的日期时间
}
//计算下一个网络广播日期时间
函数calcNextWebCast(日期){
var localizedTime=新日期(日期| |新日期());//本地化日期时间
var nextDate=new Date(Date | | new Date());//下一个网络广播datetime对象
var today=localizedTime.getDay()+“”+localizedTime.getHours();//格式化本地化日期时间以进行比较
如果(今天>=012&&today
我想知道是否有更优化的方法来实现这一点,特别是使用条件语句,以及将时间分割为参数
$(function () {
// Calculate the time locally
function calcLocalizedTime() {
var d = new Date(); // Date for current location
var utc = d.getTime() + (d.getTimezoneOffset() * 60000); // convert to msec add local time zone offset get UTC time in msec
var nd = new Date(utc + (3600000 * -5));
return nd; // return localized datetime
}
// Calculate the next Webcast DateTime
function calcNextWebCast(date) {
var localizedTime = new Date(date||new Date()); // localized datetime
var nextDate = new Date(date||new Date()); // Next webcast datetime object
var today = localizedTime.getDay() + '' + localizedTime.getHours(); // format localized datetime for comparison
if (today >= 012 && today <=320 ) { // is today between Sun @ 12 or Wednesday @ 8
nextDate.setDate(nextDate.getDate() + (3 - 1 - nextDate.getDay() + 7) % 7 + 1);
nextDate.setHours(20,0,0,0);
} else {
nextDate.setDate(nextDate.getDate() + (3 - 4 - nextDate.getDay() + 7) % 7 + 1);
nextDate.setHours(12,0,0,0);
}
return nextDate;
}
var localizedTime = calcLocalizedTime();
var nextWebCast = calcNextWebCast(localizedTime);
var m = nextWebCast.getMonth() + 1;
var d = nextWebCast.getDate();
var y = nextWebCast.getFullYear();
var hh = nextWebCast.getHours();
var mm = nextWebCast.getMinutes();
$('#defaultCountdown').countdown({until: $.countdown.UTCDate(-5, y, m-1, d, hh, mm)});
});
使用分派表替换条件语句,使用regexp替换范围:
function foo(nextDate)
{
calcNextWebCast.nextDate.setDate(calcNextWebCast.nextDate.getDate() + (3 - 1 - nextDate.getDay() + 7) % 7 + 1);
calcNextWebCast.nextDate.setHours(20,0,0,0);
}
function bar(nextDate)
{
calcNextWebCast.nextDate.setDate(calcNextWebCast.nextDate.getDate() + (3 - 4 - nextDate.getDay() + 7) % 7 + 1);
calcNextWebCast.nextDate.setHours(12,0,0,0);
}
function calcNextWebCast(date) {
calcNextWebCast.nextDate = new Date(date||new Date()); // Next webcast datetime object
var localizedTime = new Date(date||new Date()); // localized datetime
var today = localizedTime.getDay() + '' + localizedTime.getHours(); // format localized datetime for comparison
var range = "012|[0][1][3-9]|[0][2-9][0-9]|[1-2][0-9][0-9]|[3][0-1][0-9]|320";
var datemap = { "true":foo, "false":bar }
var jump = RegExp(range).test(today);
var go = datemap[jump];
go();
return nextDate;
}
参考资料