如何在给定的日期和时间运行javascript函数
我只想在给定的日期/时间运行一次特定的如何在给定的日期和时间运行javascript函数,javascript,php,datetime,Javascript,Php,Datetime,我只想在给定的日期/时间运行一次特定的javascript函数。 例如,我在php中有一个日期时间变量,如下所示 $date = "May 7, 2015 17:08:43"; 我有一些功能,比如 function some_function() { ..... ..... } 如何在给定日期时间仅运行此功能一次2015年5月7日17:08:43 我试过了,但效果不好 var date = "<?php echo date('n/j/Y/H:i', strtot
javascript函数。
例如,我在php
中有一个日期时间变量,如下所示
$date = "May 7, 2015 17:08:43";
我有一些功能,比如
function some_function()
{
.....
.....
}
如何在给定日期时间仅运行此功能一次2015年5月7日17:08:43
我试过了,但效果不好
var date = "<?php echo date('n/j/Y/H:i', strtotime($date));?>";
var myDate = new Date();
var current_date = (myDate.getMonth()+1) + "/" + myDate.getDate() + "/" + myDate.getFullYear()+ "/"+ myDate.getHours() + ":" + myDate.getMinutes();
var interval = setInterval(function() {
if(date==current_date)
{
some_function();
}
}, 4000);
clearInterval(interval);
var-date=”“;
var myDate=新日期();
var current_date=(myDate.getMonth()+1)+“/”+myDate.getDate()+“/”+myDate.getFullYear()+“/”+myDate.getHours()+”:“+myDate.getMinutes();
var interval=setInterval(函数(){
如果(日期==当前日期)
{
一些函数();
}
}, 4000);
间隔时间;
有什么好方法吗?计算服务器端的秒数
使用setTimeout(function(){some_function();},nbreOfSeconds)代码>
setInterval()
将以指定的间隔计算表达式的值您可以使用此javascript方法。将给定的时间转换为毫秒
setInterval(function(){ alert("Hello"); }, 3000);
我认为,你可以做以下几点:
setInterval(function() {
var myDate = new Date();
$date = "May 06 2015 13:50:40";
var reg = new RegExp('\(' + $date.replace(/\s/g, "\\s") + '\)', 'g');
console.log(myDate)
if ( myDate.toString().match($date) ) {
do_something();
}
}, 1000);
下面是演示:
注意:您需要根据实际日期更改日期您要执行功能
您必须使用设置超时功能,而不是@Halayem所说的设置间隔
因为设置超时将在间隔结束后执行一次
其中,将执行设置间隔,然后等待周期(nbreOfSeconds),然后再次循环
好的,您可以使用Jquery(简单选项)进行ajax调用,并使用服务器端语言检查日期
然后返回一个json状态对象,例如
下面是一个简单的例子:
check_date.php内容(此文件用于检查日期):
这是您的JavaScript代码:
当然,您应该首先加载jquery
//here is a jquery cdn link :
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function(){
$.('check_date.php',{},function(serverRespond){
jsonRespond = JSON.parse(serverRespond);
if(jsonRespond.status === 1){
setTimeout(function(){
// here is your js function that you want to execute
},afterMilSeconds);
}
});
});
</script>
//这里有一个jquery cdn链接:
$(文档).ready(函数(){
$。('check_date.php',{},函数(serverRespond){
jsonRespond=JSON.parse(serverRespond);
if(jsonRespond.status==1){
setTimeout(函数(){
//这是您想要执行的js函数
},秒后);
}
});
});
在这里有一个很有用的小库
本机setTimeout函数限制为INT32(2147483647毫秒或大约24.8天)。这个库可以设置几乎无限延迟的超时
包含库后,可以按如下方式设置超时:
// extra zeros need to get the time in milliseconds (as in JavaScript)
var date = <?php echo strtotime($date);?>000;
var id = timeout.set(some_function, date);
function some_function()
{
// do some cool stuff
timeout.clear(id);
}
//额外的零需要以毫秒为单位获取时间(如JavaScript中)
var日期=000;
var id=timeout.set(一些函数,日期);
函数some_函数()
{
//做一些很酷的事情
超时清除(id);
}
我需要知道某些函数()
可以做什么每4000个函数都可以跳过你想要的分钟…这里某些函数
用于使用位置重新加载页面。重新加载()代码>这是错误的。尽管通过字符串表示比较时间戳是一个非常糟糕的想法,但您正在检查一个在代码执行时可能永远不会出现的精确匹配。Javascript是单线程的,当任何事件(如超时)触发时,它的处理程序都会在程序循环中排队,以便尽快执行。因此,当超时触发时,如果您执行的任务延迟超过一秒,则您的分配将不匹配;var t=now()+300000;while(now()function runAt (cbk, timestamp) {
if (
! (timestamp instanceof Date)
|| isNaN (timestamp.getTime())
) throw "timestamp should be a valid Date object";
var ms = timestamp - (new Date()).getTime();
if (ms < 0) throw "Too late!!";
setTimeout(cbk, ms);
};
runAt(function(){console.log("Hello!!");}, new Date(new Date().getTime() + 5000));
// extra zeros need to get the time in milliseconds (as in JavaScript)
var date = <?php echo strtotime($date);?>000;
var id = timeout.set(some_function, date);
function some_function()
{
// do some cool stuff
timeout.clear(id);
}