【问题标题】:strtotime not working with TIME?strtotime 不与 TIME 一起使用?
【发布时间】:2011-01-11 19:56:26
【问题描述】:

我的 mysql 列有这个日期时间值,2011-04-11 11:00:00 当我应用 strtotime 时,它​​的返回日期小于今天,而它应该大于今天。

当我尝试这个strtotime(date('d/m/Y h:i A')); 代码时,它返回错误的值。在strtotime中给出TIME有问题吗?

基本上我想做的,是将我的mysql列日期与今天的日期进行比较,如果它在未来则显示“即将到来”,否则什么都不显示?

请帮助和建议,我该怎么办?

已编辑代码

$_startdatetime = $rs['startdatetime'];
$_isUpcoming = false;
if(!empty($_startdatetime)){
    $TEMP_strtime = strtotime($_startdatetime);
    $TEMP_strtime_today = strtotime(date('d/m/Y h:i A'));
    if($TEMP_strtime_today < $TEMP_strtime){
        $_isUpcoming = true;
        $_startdatetime = date('l, d F, Y h:i A' ,$TEMP_strtime);
    }
}

$rs['startdatetime'] 中的值为2011-04-11 11:00:00。有了这个值,我得到了以下输出。

$TEMP_strtime - 1302519600
$TEMP_strtime_today - 1314908160
$_startdatetime - 2011-04-11 11:00:00 

$_startdatetime它的值没有被格式化,因为即将到来的条件是假的,所以返回mysql值。

【问题讨论】:

  • $TEMP_strtime_today = strtotime(date('d/m/Y h:i A'));也称为 time() ?
  • 你为什么要strtotime(date('d/m/Y h:i A'))?只需time()
  • 您能否显示$_startdatetime 的示例值以及生成的$TEMP_strtime
  • 您的代码对我来说工作正常(在制作$TEMP_strtime_today = time(); 之后):codepad.org/aOm5dsM2
  • 澄清一下,这里的问题是d/m/Y 是一个无效的时间格式。您应该使用有效的格式,或者只使用time()

标签: php


【解决方案1】:

d/m/Y h:i A 是不可逆的(with strtotime)格式,使用标准的formats 或使用 Joel & Rocket 推荐的time()

问题

<?php
echo $today = date('d/m/Y h:i A');
echo '<br />';
echo $time = strtotime($today);
echo '<br />';
echo date('d/m/Y h:i A', $time);

输出

解决方案

<?php
$today = strtotime(date('m/d/Y h:i:s')); <- use appropriate format
// OR 
$today = time(); @credit to Joel & Rocket

【讨论】:

  • 不可逆转是什么意思?
  • 我的意思是 strtotime 无法将 d/m/Y h:i A 解析回 TIMESTAMP
  • PHP 可能只是混淆了哪个是月份,哪个是年份。
  • @Ish:事实证明你是对的。 d-m-Y 是有效格式,m/d/Y 是有效格式,但 d/m/Y 不是。
  • @Ish:你在做什么人,不要复制粘贴别人的解决方案,给你的?这与我的问题相同..您的答案有什么不同吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 2010-11-07
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多