我一直在研究检索Swift中的日期和时间,这是获得简短,可读的日期/时间输出的推荐策略:
let currentDate = NSDate()
let formatter = NSDateFormatter()
formatter.locale = NSLocale.currentLocale()
formatter.dateStyle = .ShortStyle
formatter.timeStyle = .ShortStyle
let convertedDate = formatter.dateFromString(currentDate) //ERROR HERE
print("\n\(convertedDate)")
但是这会引发一个异常,说明currentDate
不是要传递的有效参数,因为它的类型为NSDate
而不是String
你能帮我理解为什么会这样吗?在检索日期和时间时,我只发现了类似的方法。非常感谢,所有的帮助表示赞赏!
答案 0 :(得分:3)
你真的想从NSDate
转到String
,所以请使用stringFromDate
:
let convertedDate = formatter.stringFromDate(currentDate)
答案 1 :(得分:1)
以下是使用swift 3语法完成的方法 -
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.0.0'
compile 'com.google.android.gms:play-services:9.2.0'
}
defaultConfig {
.....
multiDexEnabled true
}
BR
答案 2 :(得分:0)
Leo Dabus为Friso Buurman在Question中获取NSDate的字符串写了一个很好的扩展。 Obrigado Leo
Mods请注意:我借用了它并重写它,因为原始代码使用相同的变量名称来声明static constants
,{{1和string variables
这可能会让新编码人员感到困惑。
它是Leo的一个很好的扩展,它包含argument parameters
中可以找到的NSDateFormatter
样板代码。
Swift 2
extension NSDateFormatter {
convenience init(stringDateFormat: String) {
self.init()
self.dateFormat = stringDateFormat
}
}
extension NSDate {
struct Formatter {
static let newDateFormat = NSDateFormatter(stringDateFormat: "dd-MM-yyyy")
}
var myNewDate: String {
return Formatter.newDateFormat.stringFromDate(self)
}
}
控制台输出:
print(NSDate().myNewDate) // "05-07-2016\n"
Swift 3
extension DateFormatter {
convenience init(stringDateFormat: String) {
self.init()
self.dateFormat = stringDateFormat
}
}
extension Date {
struct Formatter {
static let newDateFormat = DateFormatter(stringDateFormat: "dd-MM-yyyy")
}
var myNewDate: String {
return Formatter.newDateFormat.string(from: self)
}
}
控制台输出:
print(Date().myNewDate) // "05-07-2016\n"