从2016-02-10 00:00:00之类的日期删除时间

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)

  • 请查看这篇文章,这表明您的解决方案由于对时区的考虑而无法正常工作。/sf/answers/519183381/ (3认同)

小智 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)


hel*_*ikh 7

好的,我自己解决了这个问题

  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)


mah*_*han 5

斯威夫特 5.5+

使用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

https://developer.apple.com

  • 非常优雅,但请记住 Date.now 从 iOS 15 开始工作 (2认同)