2012-08-10 109 views
0

我有一个警报,将在确切的5:30 pm触发。我想让日期变为动态,我的意思是它会得到系统日期。因为正如你在我的代码中看到的那样,它只会在我指定的日期得到时间。谢谢!从系统日期中选择当前时间

function alert5pm() { 
    alert("It's already 5:30 pm and you only have 30 minutes left before to log-out"); 
    } 
var timeAt3pm = new Date("8/10/2012 05:30:00 PM").getTime() 
    , timeNow = new Date().getTime() 
    , offsetMillis = timeAt3pm - timeNow; 
setTimeout('alert5pm()', offsetMillis); 

例如:

创建日期的实例,以得到系统日期和时间: VAR dateToday =新的日期();

从这里,我如何提取一个特定的时间。例如,我需要指出,我需要在今天的系统日期的下午5点30分获得时间。就像我的代码一样。但正如你所看到的,它只是在2012年8月10日的日期。我希望它使用系统日期和时间。

任何想法?

来源:This SO Answer.

+0

动态的意义吗?通过用户输入或从其他地方? – Bala 2012-08-10 06:40:58

+0

我的意思是在新的日期(“8/10/2012 05:30:00 PM”)。它只会检测系统日期。无需指定日期。 – ljpv14 2012-08-10 07:36:20

回答

0

如果你想日期配置和服务器端设置的话,我建议你到服务器的Ajax调用来获取时间和日期,并设置在价值javascript函数

var time = "" 
function alert5pm() { 
    alert("It's already 5:30 pm and you only have 30 minutes left before to log-out"); 
    } 
if(time == ""){ 
    $.ajax({ 
    type: "POST", 
    url: "some_server_url_to_fetch_data", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
    time = msg.data; 
    var timeAt3pm = new Date(time).getTime(); 
    var timeNow = new Date().getTime() 
    var offsetMillis = timeAt3pm - timeNow; 
    setTimeout('alert5pm()', offsetMillis); 
    } 
}); 

} 
else{ 
    var timeAt3pm = new Date(time).getTime(); 
    var timeNow = new Date().getTime() 
    var offsetMillis = timeAt3pm - timeNow; 
    setTimeout('alert5pm()', offsetMillis); 
} 
} 
0

我认为你需要像下面的代码:

function todayAt(hours,minutes) 
{ 
    var today = new Date(); 
    today.setHours(hours); 
    today.setMinutes(minutes); 
    today.setSeconds(0); 
    return today; 
} 

alert(todayAt(17,30)); 

作为下一个步骤就可以改善功能,并通过对以您想要的任何格式显示(例如,在“5:30 AM”字符串中)。

所以,你将有下面的代码:

function alert5pm() { 
    alert("It's already 5:30 pm and you only have 30 minutes left before to log-out"); 
} 

function todayAt(hours,minutes) 
{ 
    var today = new Date(); 
    today.setHours(hours); 
    today.setMinutes(minutes); 
    today.setSeconds(0); 
    return today; 
} 

var targetTime= todayAt(17,30); 
var offsetMillis = targetTime - Date.now(); 

setTimeout('alert5pm()', offsetMillis); 
+0

你能帮我把你的代码和我现有的代码结合起来吗?我不太了解我将如何使用您的代码块。谢谢! – ljpv14 2012-08-12 19:17:38

+0

请查看我刚刚添加的代码的第二部分 – 2012-08-13 03:56:49