我以「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」];謝謝你們。 :) –