【问题标题】:Add week in smarty tpl在 smarty tpl 中添加星期
【发布时间】:2015-03-14 09:03:44
【问题描述】:
  • 输出:2015-01-20 03:52:19
  • 需要 01.20.2015 + 1 周 = 01.27.2015

我目前有{$order[orders].invoice_date|date_format:"%d.%m.%Y"}
但是如何添加周+1?

所以,我需要添加 1 周,然后格式化。
但日期不是时间戳格式。

Smarty 版本:3.1。
我只能使用 smarty 逻辑,不能使用 PHP。

如何做到这一点?

【问题讨论】:

    标签: date smarty smarty3


    【解决方案1】:

    您不需要插件来解决这个问题。可以通过catdate_format的组合来解决。

    由于date_format 是PHP strftime() 的包装器,您可以使用strftime() 中提供的转换说明符——这就是我用来解决手头问题的方法。

    试试这个:

    {$order[orders].invoice_date|cat:' +1 week'|date_format:"%d.%m.%Y"}
    

    我使用 Smarty 版本 3.1.17 来重现您的问题。该解决方案基于变量$order[orders].invoice_date 中的值是字符串2015-01-20 03:52:19 的假设。

    【讨论】:

    • 这是对 date_format 的巧妙使用 :) 不过,我仍然不建议将这种逻辑放入模板中 :)
    • @AllanNienhuis 我同意。从长远来看,将这种逻辑与智能驱动项目的表示层分离几乎总能带来回报。但这不是问题! ;-)
    【解决方案2】:

    您可以创建一个 smarty 插件,就像这样来满足您的需求。 http://smarty.incutio.com/?page=AlternativeDateModifierPlugin

    【讨论】:

      【解决方案3】:

      您根本不应该在 smarty 中执行此逻辑。这种类型的事情应该在 php 代码中完成 - 将两个日期值分配给两个单独的 smarty 变量(一个添加了 1 周),并在模板中的适当位置使用适当的一个(根据需要应用适当的 date_format) .

      edit:我知道你说过你想使用 smarty 语法来做这件事——我只是指出试图在 smarty 中进行这种类型的操作并不是模板语言的设计目的。如果您只能访问 smarty .tpl 文件,您可以尝试使用{php} 标签将您的 php 逻辑放入 .tpl 文件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多