swift中的日期转换和日期差异问题

时间:2016-06-17 05:36:30

标签: ios swift date nsdateformatter

在我的一个应用程序中,我有从服务器获取多个数据的日期和时间。我已经在tableview中展示了这一点。现在我必须通过前一行和下一行的日期和时间差来找到特定行的空闲时间。像车辆的起飞和到达以及两者之间的空闲时间。我将向您显示发生问题的已发布代码(仅限我有两个有效日期)。

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提出了另一个问题)

1 个答案:

答案 0 :(得分:1)

您的日期格式不正确。

dFormater.dateFormat = "ddMMMYYHHmm"

Capital Y是基于周年的日历中的年份。你需要使用小写Y:

dFormater.dateFormat = "ddMMMyyHHmm"