来自Unix时间戳的stringtotime

时间:2011-11-30 17:29:46

标签: php date strtotime

我在我的php脚本中执行以下操作,但我没有看到结果,但我会:

$current_date_num = strtotime("now");
   echo $current_date_num ." BEFORE DATE HOUR<br/>";

$new_current = date('Y-m-d h:i:s', strtotime($current_date_num));
   echo $new_current . " AFTER DATE<br/>";

$current_date_num = date('Y-m-d h:i:s', strtotime($current_date_num) - 60 * 60 * 6);
   echo $current_date_num ." CURRENT<br/>";

$end_date = strtotime("+1 day");
$end_date = date("Y-m-d h:i:s",$end_date);
   echo $end_date ." END DATE";

这是我的输出,只有END DATE显示了我的期望。

1322673564 BEFORE DATE HOUR
1969-12-31 07:00:00 AFTER DATE
1969-12-31 01:00:00 CURRENT
2011-12-01 12:19:24 END DATE

我认为会发生的是我获取Unix时间戳,然后使用strtotime获取当前时间,然后是当前时间减去6小时,最后是24小时后的时间。不知道我怎么搞糟这么糟糕?

2 个答案:

答案 0 :(得分:3)

你申请strtotime()两次太多了。第4行一次:

strtotime($current_date_num)

删除该内容,并在第7行中调用strtotime()

答案 1 :(得分:0)

strtotime需要人类可读的时间并将其解析为时间戳。由于您已经有时间戳,因此strptime调用会产生虚假数据。

$current_date_num = strtotime("now");
echo $current_date_num ." BEFORE DATE HOUR<br/>";

$new_current = date('Y-m-d h:i:s', $current_date_num);
echo $new_current . " AFTER DATE<br/>";

$current_date_num = date('Y-m-d h:i:s', $current_date_num - 60 * 60 * 6);
echo $current_date_num ." CURRENT<br/>";

$end_date = strtotime("+1 day");
$end_date = date("Y-m-d h:i:s",$end_date);
echo $end_date ." END DATE";

1322674409 BEFORE DATE HOUR
2011-11-30 06:33:29 AFTER DATE
2011-11-30 12:33:29 CURRENT
2011-12-01 06:33:29 END DATE