far*_*new 30 iphone objective-c nsdate nsdateformatter ios
如何将以下日期"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];
Run Code Online (Sandbox Code Playgroud)
Suh*_*tel 68
您传入的日期样式的日期格式错误.这是一个解释不同修饰符的文档:日期格式模式
要解析日期"Sun Jul 17 07:48:34 +0000 2011",你需要一个像这样的格式:
[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];
Run Code Online (Sandbox Code Playgroud)
为了得到以下格式:"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];
Run Code Online (Sandbox Code Playgroud)
如果 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"];
Run Code Online (Sandbox Code Playgroud)
作为一点建议,像“Jul”(应该是七月)这样的非标准日期可能会在这里产生问题。使用 strftime() 将所需部分转换为纯 C 语言会更快。请参阅参考资料:http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp ?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm
然后,您可以将 unix 时间戳转换回 NSDate 中:
[NSDate dateWithTimeIntervalSince1970:]
Run Code Online (Sandbox Code Playgroud)
使用 C 进行日期/时间解析通常速度快 10 倍。NSDateFormatter 是一只慢狗。
归档时间: |
|
查看次数: |
56216 次 |
最近记录: |