【问题标题】:getTime( ) JavascriptgetTime() Javascript
【发布时间】:2014-07-22 07:16:48
【问题描述】:

我有一个 php 日期,我想要关于 php 日期和今天日期的区别。 代码是: 倒计时功能(计数器、年、月、日、时、分、秒){
var datePhp = new Date(年、月、日、时、分、秒); var 今天=新日期(); 变天= 0; var小时=0; var分钟=0; 变量秒=0; var sumeDays = 0;

    if (datePhp>today){
        var difference=(datePhp.getTime()-today.getTime())/1000;
        days=Math.floor(difference/86400);
        difference=difference-(86400*days);
        if(days==1){
            sumeDays=days*24;
        }
        hours=Math.floor(difference/3600);
        printHours=Math.floor(difference/3600)+sumeDays;
        difference=difference-(3600*hours);
        minutes=Math.floor(difference/60);
        difference=difference-(60*minutes);
        seconds=Math.floor(difference);`
            $("#counter" + counter).html(printHours + ' Hours ' + minutes + '                 Minutes ' + seconds + ' Seconds');

        if (days>0 || hours>0 || minutes>0 || seconds>0){
            setTimeout("countdown("+counter+", "+year+","+month+","+day+","+hour+","+minute+","+second+")",1000)
        }

代码运行,但运行错误,因为总是说不到 24 小时。例如,如果 phpDate 是 4/06/2014 09:30(其中 4 是欧洲日,6 是六月),而今天是 2/06/2014 09:30(其中 2 是欧洲日,6 是六月)。代码说phpDate只有24小时。

而html中的代码是:

  <div id='counter<?php echo $i ?>'></div>
  <script type="text/javascript">
  countdown(<?php echo $i?>, <?php echo $year?>, <?php echo $month?>, <?php echo $day?>, <?    php echo $hour?>, <?php echo $minute?>, <?php echo $second?>);
  </script> 

【问题讨论】:

  • 年、月、日、时、分、秒在哪里定义?
  • 年、月、日、小时、分钟和秒在php代码中定义,我通过函数传递它们。 var 的值没问题。
  • @mjosee7 请将console.log(new Date()) console.log(datePhp) 的输出添加到您的问题中,这将有助于查看问题,因为它可能例如是时区问题。

标签: javascript php gettime


【解决方案1】:
p = new Date('4/06/2014 09:30')
>Sun Apr 06 2014 09:30:00 GMT+0530 (India Standard Time)
n = new Date('2/06/2014 09:30')
>Thu Feb 06 2014 09:30:00 GMT+0530 (India Standard Time)
diff = p.getTime() - n.getTime()
>5097600000
diffHours = diff / (1000 * 60 * 60)
>1416

看起来不错,从 2 月 6 日到 4 月 6 日 1416 小时

我不完全理解您的代码,但是当我使用下面的代码执行此操作时,我得到了 48 小时,这看起来不错

var datePhp = new Date(2014, 5, 4, 9, 30, 0),
    today = new Date(2014, 5, 2, 9, 30, 0);

if (datePhp > today) {
    var difference = (datePhp.getTime() - today.getTime()) / (1000*60*60);
    document.getElementById('res').innerHTML = difference;
}

这是一个相同的小提琴。 http://jsfiddle.net/tQ9jW/

如果你能解释为什么你要做所有这些复杂的事情,如果你只是需要时间差异,我们可以考虑调试代码。

【讨论】:

  • 谢谢。现在不是四月和二月。相差两天左右
  • 这就是为什么你不应该盲目依赖JS的字符串解析能力。 OP 清楚地说明了 4/06/20142/06/2014 代表的日期。它们的格式为 DD/MM/YYYY 而不是 MM/DD/YYYY
  • 好的,你能解释一下你试图做的逻辑吗,我不清楚。看起来您不仅发现了时间上的差异sumeDays 是什么,您为什么要做difference=difference-(86400*days) 之类的事情
  • @t.niese 是的,当然。我只是在控制台中快速检查一下。
  • 我有这个mundonets.com/contador-javascript.html 但是,在关于拍卖的表格中,每一行都有不同的时间。代码运行正常,但日子总是说不到 24 小时。例如,如果 phpDate 是 4/06/2014 09:30(其中 4 是欧洲日,6 是六月),今天是 2/06/2014 09:30(其中 2 是欧洲日,6 是六月)程序说到目前为止我们有 24 小时,但实际上是 48 小时
猜你喜欢
  • 1970-01-01
  • 2015-05-25
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 2011-02-07
  • 2020-08-23
相关资源
最近更新 更多