2013-04-26 73 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