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"