swift 中的日期转换和日期差异问题
Date Conversion and date difference issue in swift
在我的一个应用程序中,我有从服务器获取多个数据的日期和时间。我已经在表格视图中显示了这个。现在,我必须根据上一行和下一行的日期和时间差,根据某些条件为特定行找到一些空闲时间。诸如车辆的出发和到达以及两者之间的空闲时间之类的东西。我会告诉你发生问题的发布代码(仅适用于我有两个有效日期)。
let dFormater = NSDateFormatter()
dFormater.dateFormat = "ddMMMYYHHmm"
dFormater.locale = NSLocale(localeIdentifier: "en_US_POSIX")
dFormater.timeZone = NSTimeZone(name: "GMT")
dFormater.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
print(startDate)
print(endDate)
if let validFdate : NSDate = dFormater.dateFromString(startDate) {
if let validLdate : NSDate = dFormater.dateFromString(endDate) {
print(validFdate)
print(validLdate)
let minutes = validLdate.minutesFrom(validFdate)
print("LO P & N \(indexPath.row)= \(minutes)")
let hour = minutes/60
let min = minutes%60
let fullTime = NSString.init(format: "%02d:%02d", Int(hour),Int(min))
strToReturn = fullTime as String
}
}
而这个日志就像
03JUN161411
04JUN160542
2015-12-20 08:41:00 +0000
2015-12-20 00:12:00 +0000
LO P & N 0= -509.0
04JUN160931
05JUN160506
2015-12-20 04:01:00 +0000
2015-12-19 23:36:00 +0000
LO P & N 0= -265.0
07JUN160530
07JUN162127
2015-12-20 00:00:00 +0000
2015-12-20 15:57:00 +0000
LO P & N 2= 957.0
08JUN160049
08JUN161616
2015-12-19 19:19:00 +0000
2015-12-20 10:46:00 +0000
LO P & N 1= 927.0
现在,从这个记录的输出中,您可以看到虽然认为前两个日期有效,但它仍然显示错误输出,因为日期不同,而在最后两个输出中,输出完美,因为两个日期是同一日期。以及为什么它会更改日期月份和年份。参见
03JUN161411
2015-12-20 08:41:00 +0000
(我只针对日期 here 问了另一个问题)
您的日期格式不正确。
dFormater.dateFormat = "ddMMMYYHHmm"
大写 Y 是基于一年中星期几的日历中的年份。您需要使用小写 Y:
dFormater.dateFormat = "ddMMMyyHHmm"
在我的一个应用程序中,我有从服务器获取多个数据的日期和时间。我已经在表格视图中显示了这个。现在,我必须根据上一行和下一行的日期和时间差,根据某些条件为特定行找到一些空闲时间。诸如车辆的出发和到达以及两者之间的空闲时间之类的东西。我会告诉你发生问题的发布代码(仅适用于我有两个有效日期)。
let dFormater = NSDateFormatter()
dFormater.dateFormat = "ddMMMYYHHmm"
dFormater.locale = NSLocale(localeIdentifier: "en_US_POSIX")
dFormater.timeZone = NSTimeZone(name: "GMT")
dFormater.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
print(startDate)
print(endDate)
if let validFdate : NSDate = dFormater.dateFromString(startDate) {
if let validLdate : NSDate = dFormater.dateFromString(endDate) {
print(validFdate)
print(validLdate)
let minutes = validLdate.minutesFrom(validFdate)
print("LO P & N \(indexPath.row)= \(minutes)")
let hour = minutes/60
let min = minutes%60
let fullTime = NSString.init(format: "%02d:%02d", Int(hour),Int(min))
strToReturn = fullTime as String
}
}
而这个日志就像
03JUN161411
04JUN160542
2015-12-20 08:41:00 +0000
2015-12-20 00:12:00 +0000
LO P & N 0= -509.0
04JUN160931
05JUN160506
2015-12-20 04:01:00 +0000
2015-12-19 23:36:00 +0000
LO P & N 0= -265.0
07JUN160530
07JUN162127
2015-12-20 00:00:00 +0000
2015-12-20 15:57:00 +0000
LO P & N 2= 957.0
08JUN160049
08JUN161616
2015-12-19 19:19:00 +0000
2015-12-20 10:46:00 +0000
LO P & N 1= 927.0
现在,从这个记录的输出中,您可以看到虽然认为前两个日期有效,但它仍然显示错误输出,因为日期不同,而在最后两个输出中,输出完美,因为两个日期是同一日期。以及为什么它会更改日期月份和年份。参见
03JUN161411
2015-12-20 08:41:00 +0000
(我只针对日期 here 问了另一个问题)
您的日期格式不正确。
dFormater.dateFormat = "ddMMMYYHHmm"
大写 Y 是基于一年中星期几的日历中的年份。您需要使用小写 Y:
dFormater.dateFormat = "ddMMMyyHHmm"