Javascript 将datetime从mysql转换为php?
我正在编写以下代码(使用php和javascript的倒计时计时器)。我试图做的是从mysql中获取datetimeJavascript 将datetime从mysql转换为php?,javascript,php,mysql,Javascript,Php,Mysql,我正在编写以下代码(使用php和javascript的倒计时计时器)。我试图做的是从mysql中获取datetime($end\u date),并将其放入代码中的$date='' 如果我在下面的代码中手动输入日期和时间,该代码将正常工作:$date='2013年9月17日12:00:00 PM GMT' 但我需要它这样工作: $date = echo $dynamicList; 或者像这样: $date = echo $end_date; 我不知道我做错了什么 这是我的全部代码: <?
($end\u date)
,并将其放入代码中的$date=''
如果我在下面的代码中手动输入日期和时间,该代码将正常工作:$date='2013年9月17日12:00:00 PM GMT'代码>
但我需要它这样工作:
$date = echo $dynamicList;
或者像这样:
$date = echo $end_date;
我不知道我做错了什么
这是我的全部代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<?php date_default_timezone_set('GMT'); ?>
<?php
session_start();
// Run a select query to get my letest 6 items
// Connect to the MySQL database
include "config/connect.php";
$dynamicList = "";
$sql = "SELECT * FROM item ORDER BY id";
$query = mysqli_query($db_conx, $sql);
$productCount = mysqli_num_rows($query); // count the output amount
if ($productCount > 0) {
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$id = $row["id"];
$product_name = $row["product_name"];
$date_added = strftime("Y-m-d", strtotime($row["date_added"]));
$end_date = strftime("Y-m-d H:i:s", strtotime($row["end_date"]));
$price = $row["price"];
$dynamicList .= '<div>' . $end_date . '
</div>';
}
} else {
$dynamicList = "No Records";
}
?>
<?php
$date = echo $dynamicList;
$exp_date = strtotime($date);
$now = time();
if ($now < $exp_date) {
?>
<script>
// Count down milliseconds = server_end - server_now = client_end - client_now
var server_end = <?php echo $exp_date; ?> * 1000;
var server_now = <?php echo time(); ?> * 1000;
var client_now = new Date().getTime();
var end = server_end - server_now + client_now; // this is the real end time
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour *24
var timer;
function showRemaining()
{
var now = new Date();
var distance = end - now;
if (distance < 0 ) {
clearInterval( timer );
document.getElementById('countdown').innerHTML = 'EXPIRED!';
return;
}
var days = Math.floor(distance / _day);
var hours = Math.floor( (distance % _day ) / _hour );
var minutes = Math.floor( (distance % _hour) / _minute );
var seconds = Math.floor( (distance % _minute) / _second );
var countdown = document.getElementById('countdown');
countdown.innerHTML = '';
if (days) {
countdown.innerHTML += 'Days: ' + days + '<br />';
}
countdown.innerHTML += 'Hours: ' + hours+ '<br />';
countdown.innerHTML += 'Minutes: ' + minutes+ '<br />';
countdown.innerHTML += 'Seconds: ' + seconds+ '<br />';
}
timer = setInterval(showRemaining, 1000);
</script>
<?php
} else {
echo "Times Up";
}
?>
<div id="countdown"></div>
更改这些行:
$date = echo $dynamicList;
使用以下代码:
$date = "'".$end_date."'";
并将$end\u date
定义为全局变量
并在以下时区中添加更多参数:
$end_date = strftime("Y-m-d H:i:s A T", strtotime($row["end_date"]));
^^^ add these
您收到timesup消息是因为您的if条件不正确:
if ($now < $exp_date) {
然后比较这些时间。您还需要立即更改$now。echo$date=$dynamicList
@Richie,这只会回显页面上的Y-m-d H:i:s
。绝对错误您在$dynamicList
变量中存储html标记,然后在strotime($data)
中存储html标记。这不是存储和更改时间戳的正确方法。另外,请注意,用户正在使用strftime。要使用他们提供的日期格式,请将strftime
切换为date
,或将时间格式更改为%Y-%m-%d%H:%m:%S%p%Z
不,我仍然收到Times Up消息!在mysql中,$end_date
也为接下来的5天设置。但我仍然收到Times Up消息。我用新代码编辑了我的问题。但仍然不起作用。@EnergyLynxEnergyLynx我已经编辑了答案。。检查更新的答案。抱歉,我仍然在页面上收到相同的Times Up消息!似乎什么都不管用。
if ($now < $exp_date) {
$date = "'".$end_date."'";
$exp_date = strtotime($date);
$now = strtotime(date("Y-m-d H:i:s A T"));