我在新闻tca中有如下配置:
'ctrl' => [
'tstamp' => 'tstamp',
'crdate' => 'crdate',
以此,新闻将像1535967103
一样以小时,分钟和秒的时间保存在数据库中。我想要整理此信息,并使其像1535932800
如何在TCA配置中获取此信息?
答案 0 :(得分:1)
即使时间戳记具有秒数,您也始终可以按天排序。相同时间戳的其余排序标准通常是autoincrement字段,因此按时间戳进行升序或降序排序的结果将相同。
除非您希望按特定日期分组,否则使用另一个时间戳不会有任何改变。
可以在前端输出中完成任何其他操作,因此您可以在通过日期或strftime设置时间戳格式时跳过秒。
答案 1 :(得分:1)
好的,我用datetime创建了一个新字段,它的值与crdate相同。
然后我在其中创建了processDatamap_preProcessFieldArray(&$fieldArray, $table)
:
$dateTime = (new \DateTime())->setTimestamp($fieldArray['datetime']);
$dateTime->setTime(00, 00, 00);
$fieldArray['datetime'] = $dateTime->getTimestamp();
ext_localconf
中添加了:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['si_news'] =
\Sozialinfo\SiNews\Hooks\TCEmainHook::class;
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['si_news'] =
\Sozialinfo\SiNews\Hooks\TCEmainHook::class;
现在我的crdate没有小时,分钟和秒(在新字段中,crdate保持不变),并且我可以对此字段进行排序。
我发现从crdate删除秒的唯一解决方案是使用processDatamap_afterDatabaseOperations
并使用带有$GLOBALS['TYPO3_DB']
的自定义查询。肮脏的海事组织。
我使用新字段来覆盖crdate,因为有人说过:crdate是内部TYPO3字段。所以我没有更改内部TYPO3字段。
谢谢大家的帮助。
答案 2 :(得分:0)
tstamp和crdate无法四舍五入。他们总是每秒。