Expression Engine SafeCracker格式化日期字段格式=“%d /%m /%Y”= 01/01/1970

时间:2012-10-09 09:52:07

标签: php codeigniter expressionengine safecracker

您好我正在尝试使用format属性格式化我的日期字段{member_birthday}。但每当我将该属性应用于标记时,它都会以正确的格式显示日期,但日期不正确。

代码:

<input type="text" name="display_birthday" id="display_birthday" value="{member_birthday}" maxlength="23" size="25"/> 

显示正确的日期,即1982-11-08 12:00 AM

<input type="text" name="display_birthday" id="display_birthday" value="{member_birthday format="%d/%m/%Y"}" maxlength="23" size="25"/>

显示错误的日期,即01/01/1970

3 个答案:

答案 0 :(得分:0)

看起来member_birthday是一个字符串(或DateTime对象),但要格式化为日期,它必须是一个整数。

格式化之前将member_birthday转换为整数。如果您可以访问安全的破解程序代码,请使用strtotime,或者您可以使用模板中的PHP可执行程序块作为变量进行预解析。但是,如果你能做到这些,那么你也可以在没有模板的情况下格式化它们!

修改:http://expressionengine.com/wiki/Dates_Explained建议:

  

始终使用Localization函数在EE和Unix之间进行转换   如果您正在直接读取或写入数据库时​​间戳,则为时间戳。

答案 1 :(得分:0)

如果您的member_birthday字段确实是本机EE日期自定义字段,那么将存储的日期是UNIX时间戳,您的代码应该有效。

所以我的猜测是你没有使用本机EE日期字段,或者你是,但是在输入数据时以某种方式绕过正确的验证(因此最终得到数据库中的ISO样式的日期时间字符串)。

查看数据库(exp_channel_data表),了解该字段数据的存储方式。尝试通过控制面板输入日期,并查看该条目的结果。

答案 2 :(得分:0)

似乎日期格式函数在safecracker标记http://devot-ee.com/add-ons/support/zoo-visitor/viewthread/7449#25153中不起作用,所以我安装了这个插件http://devot-ee.com/add-ons/nice-date并使用了这段代码

{exp:low_nice_date date="{member_birthday}" format="%d/%m/%Y"}