hel*_*ikh 5 nsdate nsdateformatter ios swift
你好,我有这样的约会
2016-02-10 00:00:00
Run Code Online (Sandbox Code Playgroud)
我想以这种方式得到它的日期
14.05.2016 or 14-05-2016
Run Code Online (Sandbox Code Playgroud)
这就是我尝试过的
let dateFormatter = NSDateFormatter()
let date = "2016-02-10 00:00:00"
dateFormatter.dateFormat = "dd-MM-yyyy"
let newdate = dateFormatter.dateFromString(date)
print(newdate) //nil is coming
Run Code Online (Sandbox Code Playgroud)
Jer*_*mie 30
比建议版本更好的方法是不使用字符串格式化程序从日期转换,而是使用日历:
public func removeTimeStamp(fromDate: Date) -> Date {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: fromDate)) else {
fatalError("Failed to strip time from Date object")
}
return date
}
Run Code Online (Sandbox Code Playgroud)
小智 19
在日期上使用扩展名:
extension Date {
public var removeTimeStamp : Date? {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: self)) else {
return nil
}
return date
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let now = Date()
let nowWithouTime = now.removeTimeStamp
Run Code Online (Sandbox Code Playgroud)
好的,我自己解决了这个问题
let date = "2016-02-10 00:00:00"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let dateFromString : NSDate = dateFormatter.dateFromString(date)!
dateFormatter.dateFormat = "dd-MM-yyyy"
let datenew= dateFormatter.stringFromDate(dateFromString)
print(datenew)
Run Code Online (Sandbox Code Playgroud)
使用formatted(_:)
let now = Date.now
let date = now.formatted(.iso8601.year().month().day().dateSeparator(.dash))
Run Code Online (Sandbox Code Playgroud)
或者formatted(date:time:)
let now = Date.now
let date = now.formatted(date: .abbreviated, time: .omitted)
Run Code Online (Sandbox Code Playgroud)
.abbreviated您可以使用 DateStyle 例如.long, 或来代替.numeric。