我正在尝试从NSDate获取本地时间,并且只输出+0000时区。我正在解析ICS文件中的信息,然后使用NSDateFormatter将字符串(看起来像20131001T114445Z)转换为日期,但是由于某些原因,我无法将其更改为用户的本地时间。
这是相关的代码-
+(ISParseICS*) icsParser
{
if( !fetcher ) {
fetcher = [ISParseICS new];
fetcher.dateFormatter = [[NSDateFormatter alloc] init];
[fetcher.dateFormatter setDateFormat:@"yyyyMMdd HHmmss"];
NSLog(@"Created new singleton fetcher");
}
return fetcher;
}
-(NSMutableArray *)fetchPassesSync中的以下代码
// Extract date/time
NSString *unformattedEndDateTimeString;
NSDate *endDate;
eventScanner = [NSScanner scannerWithString:event];
[eventScanner scanUpToString:@"DTEND:" intoString:nil];
[eventScanner scanUpToString:@"\n" intoString:&unformattedEndDateTimeString];
unformattedEndDateTimeString = [unformattedEndDateTimeString stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"DTEND:"] withString:@""];
NSLog(@"This is unformattedEndDateTimeString: %@", unformattedEndDateTimeString);
endDate = [self dateFromString:unformattedEndDateTimeString];
NSLog(@"End date - %@", endDate);
...以及最后一块:
-(NSDate *)dateFromString:(NSString *)dateString {
dateString = [dateString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
dateString = [dateString stringByReplacingOccurrencesOfString:@"Z" withString:@""];
NSDate *date = [self.dateFormatter dateFromString:dateString];
// NSLog(@"The output date: %@", date);
return date;
}
我对编程还很陌生,希望我能正确地问这个问题。提前致谢。
编辑:我从所有这些代码中得到的是,它采用字符串“20131001T114445Z”并输出如下内容:“2013-10-01 11:44:45 +0000”
最佳答案
尝试这个:-
NSString *dateStr = @"20131001T114445Z";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[dateFormat setDateFormat:@"yyyyMMdd'T'hhmmss'Z'"];
NSDate *date = [dateFormat dateFromString:dateStr];
// Convert date object to desired output format
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"];
dateStr = [dateFormat stringFromDate:date];
NSLog(@"%@",dateStr);
[dateFormat release];
关于ios - 如何使用NSDateFormatter获取本地时间(从ICS文件解析),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19151503/