2011-05-29 44 views
0

在表达式引擎中,{edit_date}标记不会像{entry_date}那样返回UNIX时间戳。为了解决这个问题,我使用了下面的方法。上一次编辑条目的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

请教一个问题,而不是夸夸其谈。 – 2011-05-29 02:34:24

+0

我编辑了一些我的意见,所以它现在在最后。我明白你为什么改变了它,但我需要为那些后来的人保留我的意见。我认为用户可以说出这些信息是很重要的,因为信息可能会被其他人做出反应,以便做出改变。从现在开始,我会更加刻意地说出我的问题。谢谢:) – JeroenEijkhof 2011-05-30 19:40:11

+0

问题不是意见的地方。 – 2011-05-30 19:41:05

回答

5

如果你有PHP 5.3,有DateTime::createFromFormat

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

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

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

谢谢!干净,简单,非常灵活:) – JeroenEijkhof 2011-05-30 20:43:44

+0

我正在使用'%u',而我得到了错误的输出。我使用相同的文档作为参考,但误解了它。再次感谢! – JeroenEijkhof 2011-05-30 20:45:15