2

在尝试将 Google 日历日期字符串(从公共 JSON 解析)转换为 NSDate 格式时,我似乎遇到了很大的困难。

Google 日历 API 的结果采用以下格式:

"2012-06-20T11:00:00.000+01:00"

我正在尝试将其格式化为 NSDate,如下所示:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz";
NSDate *gmtDate = [formatter dateFromString:[whenDict objectForKey:@"startTime"]];

但是,我一直得到一个空结果,所以我想知道是否有人知道我试图转换的结果的正确 [NSDate dateformat] 是什么......

我已经尝试了各种 dateFormat 变体,但在与多个字母变体搞砸了几个小时之后,我还没有找到合适的变体!

即我相信问题出在:

formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz";

干杯,

4

1 回答 1

6

似乎 +01:00 不是标准时区,因此您必须将其更改为 +0100 从中删除冒号(请参阅iPhone NSDateFormatter Timezone Conversion

您可以使用以下代码

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ";
NSString *dataString = @"2012-06-20T11:00:00.000+01:00";
NSMutableString *mutableDate = [dataString mutableCopy];
[mutableDate deleteCharactersInRange:NSMakeRange(mutableDate.length - 3, 1)];

NSDate *gmtDate = [formatter dateFromString:mutableDate];
于 2012-06-19T12:43:46.283 回答