我以“20110912T220000”格式获取日历事件(解析.ics文件时)的开始和结束日期。我如何将其转换为NSDate以添加为事件(EKEvent)的startDate属性。如何将给定为“20110912T220000”(NSString)的日期转换为NSDate
如果有人知道,请尽快帮助我。
我以“20110912T220000”格式获取日历事件(解析.ics文件时)的开始和结束日期。我如何将其转换为NSDate以添加为事件(EKEvent)的startDate属性。如何将给定为“20110912T220000”(NSString)的日期转换为NSDate
如果有人知道,请尽快帮助我。
您应该为此使用NSDateFormatter
。
见Data Formatting Guide(该Date & Time Programming Guide也很有趣)
这还详细地this Technical Note苹果Q值&为。 请注意,对于这种情况,您应该使用本技术说明中所述的特殊“en_US_POSIX”区域。
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[df setDateFormat:@"yyyyMMdd'T'HHmmss"];
NSDate* parsedDate = [df dateFromString:...];
NSString *dateString = @"20110912T220000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
formatter.locale = locale;
formatter.dateFormat = @"yyyyMMdd'T'HHmmss";
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date: %@", date);
的NSLog()输出:date: 2011-09-13 02:00:00 +0000
注意,输出的NSLog在你的本地时区中的数据。
请注意日期格式中'T'的单引号。
下面是UTS的链接:date/time format characters
Err你的'formatter = @“...”'有问题:你可能在这里忘了'dateFormat'属性;) – AliSoftware
@AliSoftware:回归,谢谢。 – zaph
还有一个疑问,我一直在给定的时区作为“美东”。我如何使用日期格式化程序来设置它。我可以给与“[NSTimeZone timeZoneWithName:@”US-Eastern“]” –
感谢链接到TN。顺便说一句,在setLocale中,将'='更改为':'。 – zaph
我得到了我的评论的答案。它是[NSTimeZone timeZoneWithName:@“US/Eastern”];谢谢你们。 :) –