Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在给定的日期和时间运行javascript函数_Javascript_Php_Datetime - Fatal编程技术网

如何在给定的日期和时间运行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);
}