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

fen*_*ndy 1 datetime nsdate nsdateformatter ios swift

我想问一下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
Run Code Online (Sandbox Code Playgroud)

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

vad*_*ian 6

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

let startOfDate = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
Run Code Online (Sandbox Code Playgroud)

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

let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let startOfDate = calendar.startOfDayForDate(NSDate())
println(startOfDate)
Run Code Online (Sandbox Code Playgroud)

雨燕4

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let startOfDate = calendar.startOfDay(for: Date())
print(startOfDate)
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 6

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"
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特 4

let dateString = "2019-05-04 09:30:41 +0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
if let dateFromString = dateFormatter.date(from: dateString.components(separatedBy: " ").first ?? "") {
    print(dateFromString)  // "2019-05-04 00:00:00 +0000"
}
Run Code Online (Sandbox Code Playgroud)

  • 不,我不知道。没有错误 (3认同)