【发布时间】:2013-01-08 15:21:17
【问题描述】:
我将 Perl 与 Catalyst 框架一起使用,DBIx 类作为 ORM,TT 用于视图,Postgresql 作为 DB。
我有一个“没有时区的时间戳”类型的列,如果我在 Postgres 中进行手动查询,列值的格式是 2012-08-30 21:30:14,但是当我在 TT 视图文件中打印值时,我会得到这样的 @ 987654324@,所以很明显它被格式化了,但我不知道具体是什么。
我想使用Template::Plugin::Date 来格式化输出时间戳,但是我得到了 Catalyst 错误:
无法呈现模板“xxx/list.tt2:日期错误 - 错误的时间/日期字符串:需要 'h:m:sd:m:y' 得到:'2012-08-30T21:28:22'”
代码在 xxx/list.tt2 [% date.format(xxx.created) %]
那么我应该如何让它工作呢?提前致谢。
【问题讨论】:
-
您的时间戳是否被转换为数据库和模板之间的某个对象(然后字符串化)?
-
嗯,我不确定我能否完全理解时间戳发生了什么,但这里有一些由 Catalyst 在创建 DBIx Schema
xxx.pm时生成的代码:__PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp");和__PACKAGE__->add_columns("created", { data_type => "timestamp", is_nullable => 0 }, ...。除此之外,在我的list控制器方法中,我只是使用常规 DBIx 合成器获得了一大堆xxx对象。 -
InflateColumn::DateTime表明您的时间戳正在转换为DateTime实例。您可以直接调用strftime或使用strftime方法将其转换为插件可以理解的格式。我最近没有做太多 DBIx、Perl、TT 等,所以我只是抛出一些想法。
标签: perl postgresql catalyst dbix-class template-toolkit