如何使用 Vapor 4

问题描述

在列表中,我想显示数据库获取的日期。如果我使用:

#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 日星期三

但是我还是不开心...

  1. 我想让它呈现 - 而不是 / : Wed,30-12-2020

  1. 因为我的应用程序将被本地化,所以我想控制一天的显示方式:Wed(英语)、Mer(法语)、woe(荷兰语)所以我如何设置应该在 Leaf 中使用哪个语言环境

(我知道如何在 Vapor 中做到这一点,但如果可能的话,我宁愿将它留给 Leaf。)

解决方法

创建叶子方法:

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")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...