如何使用 Vapor 4 在 Leaf 模板中格式化日期字段
Posted
技术标签:
【中文标题】如何使用 Vapor 4 在 Leaf 模板中格式化日期字段【英文标题】:How to format a date field in a Leaf template using Vapor 4 【发布时间】:2021-01-03 10:05:03 【问题描述】:在一个列表中,我想显示从数据库中获取的日期。如果我使用:
#Date(timeStamp: appointment.appointmentDate,localizedFormat: "E, dd-MM-yyyy")
我预计:星期三,30/12/2020 但我得到了星期三,12/30/2020,我觉得很奇怪,因为我特别要求 dd-MM
然后我尝试了:
#Date(timeStamp: appointment.appointmentDate,fixedFormat: "E, dd-MM-yyyy")
工作正常并为我提供:2020 年 12 月 30 日,星期三
但是,我还是不开心……
-
我想用 - 而不是 / 呈现它:星期三,2020 年 12 月 30 日
和
-
由于我的应用程序将被本地化,我希望能够控制显示日期的方式:Wed(英语)、Mer(法语)、Woe(荷兰语),那么如何设置应在 Leaf 中使用的语言环境? (我知道如何在 Vapor 中做到这一点,但如果可能的话,我宁愿把它留给 Leaf。)
【问题讨论】:
我正在使用 Leaf Tau 你可能需要一个自定义标签来让它按照你想要的方式工作 好的,谢谢 0xTim,会做一个 【参考方案1】:创建叶子方法:
import Foundation
import Leaf
public struct DataLeafFunction: LeafFunction, StringReturn, Invariant
public static var callSignature: [LeafCallParameter] [
.double,
.string(labeled: nil, optional: true, defaultValue: "yyyy-MM-dd")
]
public func evaluate(_ params: LeafCallValues) -> LeafData
guard let timestamp = params[0].double else return .string(params[0].string)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = params[1].string
let date = Date(timeIntervalSinceReferenceDate: timestamp)
return .string(dateFormatter.string(from: date))
添加功能配置:
func configure(_ app: Application) throws
LeafEngine.entities.use(DataLeafFunction(), asFunction: "date")
// ...
在您的模板中使用此功能:
#date(date)
#date(date, "YY/MM/dd")
【讨论】:
以上是关于如何使用 Vapor 4 在 Leaf 模板中格式化日期字段的主要内容,如果未能解决你的问题,请参考以下文章