使用Swift将当前时间设置为yyyy-MM-dd 00:00:00

我想问一下NSDate ,如何设置/格式化当前时间,如“2015-08-12 09:30:41 +0000”到“2015-08-12 00:00:00 +0000

我已经在使用:

 var dateFormatter = NSDateFormatter() dateFormatter.dateStyle = .MediumStyle dateFormatter.timeStyle = .NoStyle //result date will be : Aug 12, 2015 

但是,值日期并未完全按“2015-08-12 00:00:00 +0000”存储在数据库中,而是存储为“2015-08-11 17:00:00 +0000 UTC”

 let dateString = "2015-08-12 09:30:41 +0000" let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") if let dateFromString = dateFormatter.dateFromString(dateString.componentsSeparatedByString(" ").first ?? "") { println(dateFromString) // "2015-08-12 00:00:00 +0000" } 

从NSDate实例中删除时间部分的最简单方法是

 let startOfDate = NSCalendar.currentCalendar().startOfDayForDate(NSDate()) 

根据当前时区使用获取日期

 let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)! calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0) let startOfDate = calendar.startOfDayForDate(NSDate()) println(startOfDate) 

如果您只关心用户设备上的时区,即您不打算将该格式化的日期字符串保存到服务器等,则可以使用以下代码:

 var formatter: NSDateFormatter = NSDateFormatter() formatter.dateFormat="yyyy-MM-dd 00:00:00 Z" formatter.stringFromDate(date) 

如果要将该日期字符串保存到服务器,则应将时区信息添加到格式化程序:

 var formatter: NSDateFormatter = NSDateFormatter() formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) formatter.dateFormat="yyyy-MM-dd 00:00:00 Z" formatter.stringFromDate(date) 

更新

现在我明白了你真正想做的事情,你有一个日期字符串而不是NSDate对象作为输入。

在保留输入的时区信息方面,您可以使用以下代码实现所需的输出。

 let dateString = "2015-08-12 09:30:41 +0000" let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) let timeZone = NSTimeZone(forSecondsFromGMT: 0) let inputDateFormatter = NSDateFormatter() inputDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss Z" inputDateFormatter.calendar = calendar if let inputDate = inputDateFormatter.dateFromString(dateString) { let outPutDateFormatter = NSDateFormatter() outPutDateFormatter.calendar = calendar outPutDateFormatter.timeZone = timeZone outPutDateFormatter.dateFormat = "yyyy-MM-dd 00:00:00 Z" print(outPutDateFormatter.stringFromDate(inputDate)) }