我在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中的相同代码:
var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"
let dateTimePrefix: String = formatter.stringFromDate(NSDate())
通过分析您的问题和您的代码,您似乎无法了解自己在做什么。尝试阅读方法文档并了解它所需的类型。
正如documentation中所述,stringFromDate
以NSDate
为输入。
你给它一个NSDateFormatter
试图被铸造为NSData
。
原始代码[NSDate date]
只是创建一个新的NSDate实例(这是当前日期)。您应该阅读Swift initialization documentation以使其更加舒适。
更换
formatter.stringFromDate(formatter as? NSData)
同
formatter.stringFromDate(NSDate())
使用Swift 5,您可以使用DateFormatter
的string(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