You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Keith Wood jQuery Countdown获取服务器端午夜时间?

解决从服务器端获取午夜时间给jQuery Countdown的问题

我来帮你搞定这个问题!你之前的尝试之所以失败,是因为把PHP输出的日期字符串直接用引号包裹赋值给了变量,而JavaScript的Date构造函数需要的是数值参数或者时间戳,不是带引号的字符串。下面给你两种可靠的实现方式:

方法1:使用Unix时间戳(推荐,避免时区解析歧义)

PHP端先获取明天午夜的Unix时间戳(注意PHP的时间戳是秒级,而JS是毫秒级,所以要乘以1000):

<?php
// 设置服务器时区(根据你的业务需求调整,比如Asia/Shanghai)
date_default_timezone_set('Asia/Shanghai');
// 获取明天午夜的Unix时间戳(秒)
$midnightTimestamp = strtotime('tomorrow');
?>

然后在JS中直接用这个时间戳创建Date对象:

// 把PHP输出的秒级时间戳转成JS需要的毫秒级
var midnight = new Date(<?= $midnightTimestamp ?> * 1000);
$('#defaultCountdown').countdown({ 
    until: midnight, 
    format: 'HMS', 
    padZeroes: true, 
    compact: true 
});

方法2:直接输出Date构造所需的数值参数

这种方式是直接把年、月、日、时、分、秒作为数值传递给JS的Date构造函数,注意JS的月份是从0开始的(比如4月对应3),所以PHP输出月份时要减1:

<?php
date_default_timezone_set('Asia/Shanghai');
// 输出格式:年, 月份(0-11), 日, 时, 分, 秒
// 明天午夜是0点0分0秒,所以直接固定为0,0,0
$midnightParams = date("Y, n-1, j, 0, 0, 0", strtotime('tomorrow'));
?>

JS中直接使用这些参数创建Date对象:

// 这里不需要引号,直接把PHP输出的数值参数传给Date构造函数
var midnight = new Date(<?= $midnightParams ?>);
$('#defaultCountdown').countdown({ 
    until: midnight, 
    format: 'HMS', 
    padZeroes: true, 
    compact: true 
});

关键注意事项

  • 一定要确保PHP的时区设置正确,否则strtotime('tomorrow')会基于服务器时区计算,可能和用户预期的午夜时间不符。
  • 避免直接传递日期字符串给Date构造函数,不同浏览器对字符串格式的解析可能存在差异,容易出现兼容性问题。

内容的提问来源于stack exchange,提问作者VickyPopovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 13:57:31