[英]Converting a date format in objective C
如何将以下日期“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];
您传入的日期样式错误的日期格式。这是解释不同修饰符的文档:日期格式模式
要解析日期“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”的字符串,则必须将其转换为 NSDate。 然后,您可以使用第二个 NSDateFormatter 将此日期转换为您想要的格式“yyyy-MM-dd HH:mm:ss”。
如果你需要弄清楚需要转换的字符串,这个网站有一个很好的参考: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
例如“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.ht
然后,您可以将 unix 时间戳转换回 NSDate
[NSDate dateWithTimeIntervalSince1970:]
使用 C 进行日期/时间解析通常快 10 倍。 NSDateFormatter 是一只慢狗。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.