shi*_*lpa 2 iphone nsdateformatter ios4
NSDateFormatter *isoDateFormatter = [NSDateFormatter new];
[isoDateFormatter setDateFormat:@"yyyy-MM-dd"];
[isoDateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[isoDateFormatter setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSString * str = [isoDateFormatter dateFromString:@"2008-12-31T12:00:00"]
Run Code Online (Sandbox Code Playgroud)
在4.0 IOS上面的代码即str是nill,在3.0 IOS上这个工作正好是2008-12-31.如何克服这个问题?
Dan*_*Ray 13
看起来您想要将日期从一种字符串格式转换为另一种字符串格式.为此,您必须分两步完成 - 将FROM字符串格式化为NSSDate,然后从该日期格式化为NSString.
NSDateFormatter *dateWriter = [[NSDateFormatter alloc] init];
NSDateFormatter *dateReader = [[NSDateFormatter alloc] init];
[dateWriter setDateFormat:@"yyyy-MM-dd"];
[dateReader setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *dateTmp = [dateReader dateFromString:@"2008-12-31T12:00:00"];
NSString *str = [dateWriter stringFromDate:dateTmp]
//str now contains "2008-12-31".
//and don't forget!!!
[dateReader release];
[dateWriter release];
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以通过读取,重置dateFormat然后写入来使用一个日期格式化程序获得相同的结果.我刚刚这样做了,所以很容易看到这个过程.
旁注 - 我总是忘记发布NSDateFormatters.Clang和Instruments总是让我泄漏它们.我想我会使用它们,感觉它们已经完成了.但他们不是!所以要比我更聪明,并记住你的内存管理NARC!
附注2 - 不要忽略编译器警告.您的编译器会警告您正在执行的无效任务,而您却忽略了这一点.
| 归档时间: |
|
| 查看次数: |
4922 次 |
| 最近记录: |