2013-05-10 120 views
-3

我想從兩個代表時間和日期的NSStrings創建NSDateNSDateDormatter中的錯誤日期和時間

看我的代碼:

NSDateFormatter *form = [[NSDateFormatter alloc] init]; 

[form setDateFormat:@"hh:mm dd.MM.yyyy"]; 

NSDate *notDate = [form dateFromString:[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date]]; 

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate); 

日誌顯示此號碼:

12:00 12.05.2013 // 2013-05-11 18:00:00 +0000 

在左側 - 2串,在右邊 - 日期

第一次拿到12: 00,當第二個18:00!此外,他們有不同的日子!

他們爲什麼不一樣?

+1

有沒有聽說過「時區」? – 2013-05-10 11:20:10

回答

0

如果更改

[form setDateFormat:@"hh:mm dd.MM.yyyy"]; 

[form setDateFormat:@"HH:mm dd.MM.yyyy"]; 

它將使用24小時格式。

NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate); 

應該輸出00:00 12.05.2013 // 2013-05-11 18:00:00 +0000並說明了一切:

的NSDateFormatter需要你的當前區域帳戶,如果你不手動更改,而內部的每個NSDate的對象保存在格林尼治標準時間(因此+0000)。
根據您的個人資料,您位於彼爾姆 - 即格林威治標準時間前6小時。

所以日期是相同的,一旦打印與時區的帳戶,一次沒有。

0
NSLog(@"%@ // %@",[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date],notDate); 

在這行你打印一個字符串和NSDate ..你從字符串創建一個NSDate。 NSDate將字符串隱式轉換爲NSDate格式....因此它們是不同的。

+0

是什麼?你看到他們有不同的時間和日子嗎? – 2013-05-10 09:32:38

1

您應該通過使用stringFromDate函數將notDate更改爲NSString。試試這個代碼: -

NSDateFormatter *form = [[NSDateFormatter alloc] init]; 

[form setDateFormat:@"HH:mm dd.MM.yyyy"]; 

NSDate *notDate = [form dateFromString:[@"" stringByAppendingFormat:@"%@ %@",z.time,z.date]]; 

NSLog(@"notDate =====> %@",notDate); 

NSLog(@"date =====> %@",[form stringFromDate:notDate]); 

我希望它可以幫助你。由於

+0

您也可以使用hh:mm dd.MM.yyyy日期格式。它對你有用嗎? – chandan 2013-05-10 11:29:16