上次编辑条目的UNIX时间戳

时间:2011-05-29 02:05:23

标签: php codeigniter expressionengine

在Expression Engine中,{edit_date}标记不会返回{entry_date}之类的UNIX时间戳。为了解决这个问题,我采用了以下方法。

有没有人知道如何让这更容易?

{exp:channel:entries channel="pieces" limit="1" track_views="three"}
<?php
$edit_date_string = {edit_date};
$edit_date = NULL;
if(!isset($edit_date_string)) {
  $edit_date = {entry_date};
} else {
  // Date format: 2011 05 25 00:53:44
  // Raw: 20110525005344
  $hour   = substr($edit_date_string, -6, 2);
  $minute = substr($edit_date_string, -4, 2);
  $second = substr($edit_date_string, -2, 2);
  $day    = substr($edit_date_string, -8, 2);
  $month  = substr($edit_date_string, -10, 2);
  $year   = substr($edit_date_string, -12, 2);
  $edit_date = mktime($hour, $minute, $second, $month, $day, $year);
}
echo $edit_date;
?>
{/exp:channel:entries}

作为旁注,似乎这是一种不一致,这使得处理和比较日期变得更加困难。这可能是一个很好的理由。有人知道吗?感谢

1 个答案:

答案 0 :(得分:5)

如果你有PHP 5.3,那就是DateTime::createFromFormat

$edit_date = DateTime::createFromFormat('YmdHis', $edit_date_string)->getTimestamp();

或者,更直接地说,根据Expression Engine docs

$edit_date = {edit_date format="%U"}