我如何转换以下日期“Sun Jul 17 07:48:34 +0000 2011” 格式如下“2011-07-17 07:48:34”?
我使用NSDateFormatter
如下所示,但它没有用。结果是null。
NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init];
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[objDateFormatter dateFromString:sDate];
答案 0 :(得分:68)
您传递的日期样式的日期格式错误。以下是解释不同修饰符的文档:Date Format Patterns
要解析日期“Sun Jul 17 07:48:34 +0000 2011”,你需要一个像这样的格式:
[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
要使其符合以下格式:“2011-07-17 07:48:34”,这里是完整的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
NSDate *date = [dateFormatter dateFromString:sDate];
// Convert to new Date Format
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *newDate = [dateFormatter stringFromDate:date];
答案 1 :(得分:2)
如果sDate是您的字符串格式为“Sun Jul 17 07:48:34 +0000 2011”,则必须将其转换为NSDate。然后,您可以使用第二个NSDateFormatter将此日期转换为所需格式“yyyy-MM-dd HH:mm:ss”。
如果你需要找出转换所需的字符串,这个网站有一个很好的参考: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
e.g。 “Sun Jul 17 07:48:34 +0000 2011”可以用
解析[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"];
作为一点建议,像“Jul”(应该是7月)这样的非标准日期会在这里产生问题。使用strftime()在纯C中转换所需的部分会更快。 请参阅参考:http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm
然后,您可以使用
将NSDate中的unix时间戳转换回来[NSDate dateWithTimeIntervalSince1970:]
使用C进行日期/时间分析通常可以快10倍。 NSDateFormatter是一只慢狗。