【问题标题】:$Date.Format on Silverstripe 4 TemplateSilverstripe 4 模板上的 $Date.Format
【发布时间】:2018-09-04 12:24:27
【问题描述】:

我在数据库中有一个格式为“YY-mm-dd”的日期。在模板上,我希望它采用这种格式:dd.mm.YY 通常它会与 $date.Format('d.m.Y') 一起使用 但在 Silverstripe 4 中没有。它从 2018-05-08 转换为 8.0.2018。只有年份是正确的。有没有变化。我在文档中没有找到任何内容

【问题讨论】:

    标签: date silverstripe date-format silverstripe-4


    【解决方案1】:

    SS4 中的日期格式已从 PHP 日期格式更改为 CLDR date formatting (changelog link):

    将 Format() 方法更改为使用 CLDR 格式字符串,而不是 PHP 格式字符串。例如。 d/m/Y H:i:s(php 格式)应替换为 dd/MM/y HH:mm:ss(CLDR 格式)。

    您可以使用它来实现您想要的:

    $Date.Format('dd.MM.y')
    

    【讨论】:

    • 这让我成为了一个人
    • 更糟糕的是,他们所谓的“文档”对这些问题保持沉默。它将参数“记录”为字面意义上的“格式字符串”......你不会说 Sherlock......
    • 有没有办法通过config改变SS4的默认格式?这样我们就可以更轻松地保持向后兼容性,而无需修改每个实例。
    • 你需要替换一堆核心类,然后第三方模块就会崩溃,除非你构建了你的适配器来处理这两种格式。最好咬紧牙关IMO
    • 有时很难找到像这样的简单格式的基本文档。
    【解决方案2】:

    上一个答案中提到的有关日期格式的指南已移动。 Silverstripe 4 使用的 CLDR 日期格式的新位置可以在这里找到: https://unicode-org.github.io/icu/userguide/format_parse/datetime/#date-field-symbol-table

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多