ios开发 中文(真机)环境下的时间格式转换问题

来源:互联网 发布:怪物猎人ol优化补丁 编辑:程序博客网 时间:2024/06/06 02:55

今天在处理从新浪微博传回来的时间格式转换问题时发现了一个问题。新浪返回的时间格式为 "Tue May 30 20:10:04 +0800 2014",也就是说我们应该用类似"EEE MMM dd HH:mm:ss Z yyyy"这样的格式进行转换。然而按照如下方法进行转换的时候返回的date总是nil。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"];NSDate *testDate = [dateFormatter dateFromString:@"Tue May 30 14:10:02 +0800 2014"];

可能大家拷贝代码自己去试试的话会发现:没有问题啊,返回的并不是nil啊。

如果你有这样的问题,那么我想问一下,你是用什么测试的?语言环境是什么?


出现这个问题的时候,无奈从HH:mm:ss开始慢慢试,看一下哪里出了问题。后来发现其他的都正常,一旦到了MMM和EEE的时候就出问题了。后来一次在模拟器上调试的时候突然正常了。所以我打印了真机下的date对象的时间。发现中文环境下时间会有一个CST(China Standard Time)后缀。

所以接下来重新设置了dateFormatter的一些属性,如下

        //时间格式转换        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];        //另中文(真机)环境下也能正常转换        [dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];        //新浪微博返回时间格式        [dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"];        NSDate *testDate = [dateFormatter dateFromString:weiboTime];        //设置成 月份-日期 小时:分钟 的格式        dateFormatter.dateFormat = @"MM-dd HH:mm";        weiboTime = [dateFormatter stringFromDate:testDate];

这样返回的时间就可以转换了,不会出现nil date的现象了。


0 0