有没有一种简单的方法将ISO8601时间戳转换为格式化的NSDate?

有没有一种简单的方法将ISO8601时间戳转换为格式化的NSDate?

如果我使用以下代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];   [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];NSDate *myDate = [dateFormatter dateFromString:@"2010-01-28T15:22:23.863"];NSLog(@"%@", [dateFormatter stringFromDate:myDate]);

它成功地转换为一个Date对象,但是,我似乎无法以任何其他方式格式化它yyyy-MM-dd'T'HH:mm,即记录的是什么2010-01-28T15:22:23

如果我更改dateFormat以说[dateFormatter setDateFormat:@"yyyy-MMMM-d'T'HH:mm"];Date对象为null ...

所以我的最终问题是如何格式化SQL数据库中的ISO8601时间戳,以便使用,例如,NSDateFormatterMediumStyle返回“2010年1月1日”?


料青山看我应如是
浏览 818回答 3
3回答

慕标5832272

您需要另一个格式化程序来处理输出。把它放在你的代码之后:NSDateFormatter *anotherDateFormatter = [[NSDateFormatter alloc] init];   [anotherDateFormatter setDateStyle:NSDateFormatterLongStyle];[anotherDateFormatter setTimeStyle:NSDateFormatterShortStyle];NSLog(@"%@", [anotherDateFormatter stringFromDate:myDate]);

牛魔王的故事

我有一个类似但稍微复杂的问题,我找到了一个非常简单的解决方案!问题: 我的传入ISO8601日期如下所示:2006-06-14T11:06:00+02:00它们在末尾有一个时区偏移量。解决方案: 使用Peter Hosey的ISO8601DateFormatter,您可以从这里下载。ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];NSDate *theDate = [formatter dateFromString:dateString];[formatter release], formatter = nil;和ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];NSString *dateString = [formatter stringFromDate:[twitch dateTwitched]];[formatter release], formatter = nil;
打开App,查看更多内容
随时随地看视频慕课网APP