您好我正在尝试使用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
答案 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"}