[英]NSDate format and value strange behavior
我有以下代碼:
NSDateFormatter * df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setFormatterBehavior:NSDateFormatterBehaviorDefault];
myres.start_date = [df dateFromString:[NSString stringWithFormat:@"%@ %@", [self.data objectForKey:@"date"], [self.data objectForKey:@"start_time"]]];
NSLog(@"Start date is %@", [NSString stringWithFormat:@"%@ %@", [self.data objectForKey:@"date"], [self.data objectForKey:@"start_time"]]);
NSLog(@"Start date from NSDate is %@", myres.start_date);
myres.end_date = [df dateFromString:[NSString stringWithFormat:@"%@ %@", [self.data objectForKey:@"date"], [self.data objectForKey:@"end_time"]]];
NSLog(@"End date is %@", [NSString stringWithFormat:@"%@ %@", [self.data objectForKey:@"date"], [self.data objectForKey:@"end_time"]]);
NSLog(@"End date from NSDate is %@", myres.end_date);
我得到的結果是:
Start date is 2011-03-31 9:00:00
Start date from NSDate is 2011-03-31 16:00:00 +0000
End date is 2011-03-31 10:00:00
End date from NSDate is 2011-03-31 17:00:00 +0000
為什么結果不同? 我想擁有它,以便當我調用myres.start_date描述時,它為我提供與字符串相同的數據。
結果有所不同,因為您正在使用通用description
方法打印NSDate
實例,該方法與您期望的輸出格式不匹配。
如果使用[df stringFromDate:myres.start_date]
,則應獲得相同的輸出。
請記住, NSDate
存儲時間的表示形式 ,並且有很多打印時間的方式, description
的打印時間方式是固定的。
description
NSDate
以所需格式返回字符串的唯一方法是使用類別覆蓋它或使用子類。
您似乎對時間的存儲和顯示方式有一個基本的誤解:您的NSDate
正在存儲由NSDateFormatter
解析的時間,並且實際上它在其description
方法中返回了相同的數據 。 它只是以其他形式顯示 。
日期格式器將時區考慮在內。 直接使用日期時,只得到它的描述,這顯然是祖魯時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.