在目标C中转换date格式
如何将以下date“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];
您的date格式对于您传递的date样式是错误的。下面是一个解释不同修饰符的文档: date格式模式
为了parsingdate“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];
如果sDate是格式为“Sun Jul 17 07:48:34 +0000 2011”的string,则必须将其转换为NSDate。 然后,您可以使用第二个NSDateFormatter将此date转换为您所需的格式“yyyy-MM-dd HH:mm:ss”。
如果你需要找出需要转换的string,这个网站有一个很好的参考: http : //unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
例如“Sun Jul 17 07:48:34 +0000 2011”可以被parsing
[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"];
作为一些build议,像“七月”(应该是七月份)这样的非标准date可能会造成问题。 用普通的C,用strftime()来转换所需的部分会更快。 请参阅参考资料: http : //publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm
然后,您可以使用NSDate将该unix时间戳记转换回来
[NSDate dateWithTimeIntervalSince1970:]
使用C进行date/时间parsing通常要快10倍。 NSDateFormatter是一个慢狗。