2012-08-15 200 views
2

我遇到了NSDate實例的問題。從日期刪除時間

我收到日期2012-08-16 00:00:00 +0000
但我需要從00:00:00 +0000中刪除。

有沒有辦法做到這一點?

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init]autorelease]; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
NSDate *eventDate = [formatter dateFromString:currentDate]; // current Tile 

NSLog(@"date %@",eventDate); 

回答

3

使用

NSLog(@"date %@",[formatter stringFromDate:eventDate]); 

一個NSDate僅僅是在單個時間點。它不知道它應該如何格式化,這就是NSDateFormatter的用途。

NSLog(@"date %@",eventDate);打印日期的默認字符串表示形式。

+0

thx快速回復。但我需要得到NSDate實例 – user1397784 2012-08-15 17:15:44

+0

然後我不明白你的問題。你有'eventDate'這是'NSDate'。你需要什麼? – 2012-08-15 17:17:49

+0

日期應該在NSDate tyep而不是NSStirng。 [formatter stringFromDate:eventDate]給出一個字符串。 – user1397784 2012-08-16 04:26:13

1

日期格式化程序將字符串轉換爲日期和日期轉換爲字符串。無論您如何創建它,NSDate都代表一個時間點。在你的代碼中,你似乎認爲NSDate會「記住」它所來自的格式化程序沒有指定一天的時間;它不會。當你打電話給dateFromString:時,它只會選擇00:00:00(午夜)。

如果需要使用日曆日期的工作不分時間,您可以:

  1. 使用的NSDate對象,而忽略時間部分。您需要警惕時區,因爲從8月15日的午夜開始,一個時區可能是8月14日晚上11點在另一個時區。

  2. 使用不同的數據結構來存儲年,月和日。 NSDateComponents是一個很好的候選人,或者你可以創建自己的。