如何将这个日期代码转换为swift?

问题描述 投票:2回答:3

我在Objective-C中有这个代码:

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd-HH-mm-ss"];
NSString* dateTimePrefix = [formatter stringFromDate:[NSDate date]];

我正在尝试转换为Swift,但我不知道这是我尝试的任何行:

var formatter = NSDateFormatter()
formatter.dateFormat="yyyy-MM-dd-HH-mm-ss"
var dateTimePrefix : NSString
dateTimePrefix = formatter.stringFromDate(formatter as? NSData)

我在stringFromDate得到错误。问题是什么?

swift xcode6
3个回答
6
投票

这将是Swift中的相同代码:

var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"
let dateTimePrefix: String = formatter.stringFromDate(NSDate())

2
投票

Disclamer

通过分析您的问题和您的代码,您似乎无法了解自己在做什么。尝试阅读方法文档并了解它所需的类型。

Error

正如documentation中所述,stringFromDateNSDate为输入。

你给它一个NSDateFormatter试图被铸造为NSData

原始代码[NSDate date]只是创建一个新的NSDate实例(这是当前日期)。您应该阅读Swift initialization documentation以使其更加舒适。

Answer

更换

formatter.stringFromDate(formatter as? NSData) 

formatter.stringFromDate(NSDate())

0
投票

使用Swift 5,您可以使用DateFormatterstring(from:)方法将Date转换为格式化的String

以下Playground示例代码显示如何使用string(from:)

import Foundation

let date = Date()

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"

let dateString = formatter.string(from: date)
print(dateString) // prints: 2019-03-04-17-59-23
© www.soinside.com 2019 - 2024. All rights reserved.