我有以下代碼:關於產品NSDateFormatter和NSCalendar(包括時區)
self.formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:timeZone];
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss a z"];
timeStampForCity = [formatter stringFromDate:[NSDate date]];
NSLog(@"%@", timeStampForCity);
updateDate = [formatter dateFromString:timeStampForCity];
NSLog(@"%@", updateDate);
NSLog(@"%@", timeStampForCity);
輸出:
2011-08-01 10:05:50 PM EDT
但NSLog(@"%@", updateDate);
輸出:
2011-08-02 02:05:50 +0000
我需要updateDate
到顯示當前時區中的時間(例如,如在第一個NSLog()輸出中所見)。我如何正確地做到這一點?
編輯1
我也有這樣的代碼:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSTimeZoneCalendarUnit;
NSDateComponents *dateComponents = [gregorian components:unitFlags fromDate:[NSDate date]];
[dateComponents setTimeZone:[NSTimeZone timeZoneWithName:cityNameFormatted]];
updateDate = [gregorian dateFromComponents:dateComponents];
[gregorian release];
但時區顯示它是關閉的許多地區。
非常感謝您的幫助。
這是什麼問題?當你轉換成一個字符串時,你得到了你指定的格式。當您轉換回日期時,自然記錄結果使用默認的日期格式:NSDate只包含日期/時間信息,而不是格式化信息。 –
我需要EDT中的日期或我指定的任何其他時區。 – ArtSabintsev