我知道这个问题已被多次询问,因为我在google和stackoverflow上找到了一些问题。
但他们都没有解释如何在我的php中格式化我的日期时间,所以它与jquery倒计时器结合使用。所以我想在这里问一下,希望有人能为我揭开这一点。
基本上我要做的是创建一个倒数计时器,它将与mysql datetime一起使用。
日期时间存储在mysql中,所以我只需要在我的php中获取正确的格式,这样倒数计时器就可以使用它。
我正在使用此插件:http://keith-wood.name/countdown.html
这是我到目前为止所做的:
PHP格式化:
$end_date = date("m d Y H:i:s T", strtotime($row["end_date"]));
Jquery / Javascript代码:
<script type="text/javascript">
$(function(){
var countdown = $('#countdown'),
ts = new Date(<?php echo $end_date * 1000; ?>),
finished = true;
if((new Date()) > ts)
{
finished = false;
}
$('#defaultCountdown').countdown({
timestamp : ts,
callback : function(days, hours, minutes, seconds)
{
var message = "";
message += days + " days, ";
message += hours + " hours, ";
message += minutes + " minutes, ";
message += seconds + " seconds ";
message = (finished ? "Countdown finished" : "left untill the New Year");
countdown.html(message);
}
});
});
</script>
当我运行此代码时,我得到的只是0 hours, 0 minutes, 0 seconds.
我只能怀疑问题来自格式化我的php部分中的日期时间!
还是我错过了其他的东西?
好的我已经设法将代码缩小到这个:
<script type="text/javascript">
$(document).ready(function () {
$('#defaultCountdown').countdown({
until: new Date(<?php echo $end_date; ?>),
compact: true
});
});
</script>
并将php更改为:
$end_date = date("Y, n, j, G, i, s", strtotime($row["end_date"]));
然而,coutdown计时器中显示的时间错误(离开)。
$end_date
是:mysql datetime中的September 22 2013 23:30:00 GMT
但是jquery倒计时器正在显示:
34d 06:21:48
2013, 9, 22, 23, 30, 00
34天和6小时等等等等绝对是错误的!
我现在在这里做错了什么?
答案 0 :(得分:4)
JavaScript Date
对象的构造如下:
Date(year, month, day, hours, minutes, seconds, milliseconds)
这意味着你可能应该沿着这些方向做点什么:
$end_date = date("Y, n, j, G, i, s", strtotime($row["end_date"]));
来源:
修改强>
此外,我似乎在jQuery Countdown手册中找到了问题:
关于日期的注释 - JavaScript Date构造函数需要年份, 月份和日期作为参数。但是,月份范围从0到11。 明确指出日期是什么日期(3个月意味着3月份 或四月?)我指定从1到12的月份并手动减去 1.因此,以下表示2010年12月25日。
所以,你必须拆分字符串,从月份中减去1并重建......
$tmp_date = explode(', ', $end_date);
$tmp_date[1] = $tmp_date[1] - 1;
$end_date = implode(', ', $tmp_date);
链接到jsFiddle