【发布时间】:2013-10-03 05:32:20
【问题描述】:
我正在尝试从 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”
【问题讨论】:
-
尝试像这样使用 [fetcher.dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
-
z不是指“祖鲁时间”(即 GMT + 0000)吗? -
@Shan 是的,谢谢,我明白了。谢谢!
-
@trojanfoe 是的,z 表示 zulu/+0000 - 我终于弄明白了。谢谢!
-
@user2829186 欢迎 :)
标签: ios objective-c nsdate nsdateformatter