如何编码'让时间戳:日期'获得2018年5月10日晚上10点

时间:2018-05-09 02:58:11

标签: swift date date-formatting

在我的dateLabel中,我得到以下结果2018-05-09 02:21:23 +0000。 在我的代码的哪个位置我需要做的事情' dateformatting'获得2018年5月10日晚上10点。 谢谢。

struct Model {
    let firstName: String
    let lastName: String
    let timestamp: Date

    static func loadSampleData() -> [Model] {
        return [
            Model(firstName: "john", lastName: "doe", timestamp: Date()),
            Model(firstName: "alex", lastName: "doe", timestamp: Date()),
            Model(firstName: "lisa", lastName: "doe", timestamp: Date())
        ]
    }
}

class ModelTableViewCell: UITableViewCell {
    @IBOutlet weak var firstNameLabel: UILabel!
    @IBOutlet weak var lastNameLabel: UILabel!
    @IBOutlet weak var dateLabel: UILabel!

    func update(with name: Model) {
        firstNameLabel.text = name.firstName
        lastNameLabel.text = name.lastName
        dateLabel.text = "\(name.timestamp)"
    }
}

2 个答案:

答案 0 :(得分:1)

日期格式化程序是非常重的对象,所以不要使它本地化并尝试在整个应用程序中重用该对象。为此,您可以extension DateFormatter Date并为该格式化程序创建一个静态属性。定义该扩展中的所有格式化程序。要在您的应用中的任何位置使用它,请扩展extension DateFormatter { static let shortDate: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "MMM dd,yyyy hh:mm a" return formatter }() } extension Date { /// Prints a string representation for the date with the given formatter func string(with format: DateFormatter) -> String { return format.string(from: self) } /// Creates an `Date` from the given string and formatter. Nil if the string couldn't be parsed init?(string: String?, formatter: DateFormatter) { guard let date = formatter.date(from: string ?? "") else { return nil } self.init(timeIntervalSince1970: date.timeIntervalSince1970) } } 并使用它。

update(with name: Model)

let strDate = name.timestamp.string(with: .shortDate) 方法中将其用作:

strDate

现在在您的标签中传递string(with format: DateFormatter)。 如果要在日期中使用dataset_csv = np.loadtxt('dataset.csv', delimiter=',') x_train=dataset_csv[:round(len(dataset)*0.9),0:3] y_train=dataset_csv[:round(len(dataset)*0.9),3] x_test=dataset_csv[round(len(dataset)*0.9):,0:3] y_test=dataset_csv[round(len(dataset)*0.9):,3] model =Sequential() model.add(Dense(12, input_dim=3, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(4, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics = ['accuracy']) model.fit(x_train,y_train,epochs = 10, batch_size =24) scores = model.evaluate(x_test,y_test) 方法转换字符串。

答案 1 :(得分:0)

update方法中使用日期格式化程序,而不是使用字符串插值。

func update(with name: Model) {
    firstNameLabel.text = name.firstName
    lastNameLabel.text = name.lastName

    let fmt = DateFormatter()
    fmt.dateStyle = .medium
    fmt.timeStyle = .medium

    dateLabel.text = fmt.string(from: name.timestamp)
}

根据您的需要设置样式。