2016-06-17 12 views
0

私のアプリケーションの1つでは、サーバーから複数のデータを取得する日時があります。私はこれを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 

のようなものです、あなたはそれが有効な日付は最初の2まだそれが別の日付があるので、間違った出力を表示し、中にあったと思っ見ることができます最後の2つの出力には、両方の日付が同じ日付のため、完璧な出力があります。また、なぜそれが月と年の日付を変更するのか。あなたの日付の形式が正しくない

03JUN161411 

2015-12-20 08:41:00 +0000 

(私は日付のみhereために別の質問をしてきた)

+0

ちょっと一見で、あなたのコードの循環的複雑さは非常に高く、貴重な時間を費やすことなく問題になるのは難しいと感じています。私はあなたが時間差を得ることができる多くの関数を与えることを思い出した場合、NSTimeIntervalメソッドを使ってcalcを試してください。 – mkumar

+0

@mkumar、質問を編集して問題を理解できるように発行されたコードだけを入れさせてください – Max

+0

@Jaimish 。 jrturtonの答えから問題が見つかりました。 YYとYYの問題。 – Max

答えて

1

を参照してください。

dFormater.dateFormat = "ddMMMYYHHmm" 

資本金Yは、週単位のカレンダーの年です。あなたは小文字のYを使用する必要があります:

dFormater.dateFormat = "ddMMMyyHHmm" 
+0

ありがとうたくさんの男!最後にそれは私のために働く。 – Max