2013-04-26 121 views
0

我無法解決如何使用NSDateFormatter解析某個日期格式並將其放入EKEvent中。目前這是我的代碼。我已經請求允許添加事件和方法,從requestAccessToEntityType完成處理程序調用:完成:NSDateFormatter在向日歷中添加事件時未正確格式化日期

-(void) performCalendarOperation { 
    NSString *startString = @"04/28/2013 2:30 PM"; 
    NSString *endString = @"04/28/2013 5:30 PM"; 

    EKEvent *newEvent = [EKEvent eventWithEventStore:self.eventStore]; 
    [newEvent setCalendar:[self.eventStore defaultCalendarForNewEvents]]; 
    NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
    [format setDateFormat:@"MM/dd/yyyy hh:mm a"]; 

    newEvent.startDate = [format dateFromString:startString]; 
    newEvent.endDate = [format dateFromString:endString]; 

    NSLog(@"START:%@\n\nEND:%@\n\n", newEvent.startDate, newEvent.endDate); 
} 

的NSLog的打印如下:

START:2013年4月28日21:30:00 +0000
END:2013年4月29日00:30:00 +0000

在這種特定情況下我想這在12小時的時間

的NSDateFormatter格式字符串似乎是這個正確日期字符串的樣式,但由於某種原因輸出不正確。在設置了更多屬性後,事件實際上會在代碼中添加到日曆中,但這對於此問題並不重要。
就像一個筆記,當我解析iOS 6.0以前的日期時,我從來沒有遇到過這個問題,所以也許它是API中的一些變化或者我沒有考慮的格式化的人爲因素?我有沒有看到明顯的錯誤?

謝謝。

+0

這是NSLog打印NSDate對象的方式。您的格式字符串只是讓日期格式化程序知道您的字符串是什麼形式,因此可以將其轉換爲日期。如果你想以不同的方式打印出來,那麼你需要記錄一個stringFromDate:字符串,而不是NSDate對象。 – rdelmar 2013-04-26 22:00:58

回答

0

NSLog始終打印24小時制和時區GMT + 0/UTC。這就是爲什麼它看起來不正確,但實際上是這樣。如果你想使用NSLog正確地打印日期,你需要使用NSDateFormatter來根據你的喜好來格式化日期(使用stringFromDate)。

+0

這看起來是個問題,而且是一個明顯的問題。感謝您爲我節省更多頭痛! – Killectro 2013-04-29 16:38:20