Min*_*nar 38 cocoa nsdate nsstring nsdateformatter
我有一个包含当前日期的字符串,使用它:
NSString *date = [[NSDate date] description];
Run Code Online (Sandbox Code Playgroud)
在不同的点,我想从这个字符串中检索日期,我使用以下代码:
[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
[dateFormatter setDateFormat:@"YYYY-MM-DD HH:MM:SS ±HHMM"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:<NSString containing date>];
Run Code Online (Sandbox Code Playgroud)
我正在dateFromString为nil为0x0.我究竟做错了什么?
Nic*_*ley 64
你不能发明格式字符串语法并期望它工作; 你需要实际使用文档格式.(说真的,"MM"同时表示"月","分钟"和"GMT偏移分钟"?)
正如文档所指出的那样,10.4格式化程序使用Unicode格式字符串.
尝试"yyyy-MM-dd HH:mm:ss ZZZ".
另外,Objective-C源是ASCII.不要把像这样的字符放在那里,并希望它能在任何环境中工作; 相反,使用字符串文件.
此外,dateFromString:返回一个自动释放的NSDate,因此:
NSDate *dateFromString = [[NSDate alloc] init]; // <- non freed instance
dateFromString = [dateFormatter dateFromString:<NSString containing date>]; // <- new autoreleased instance
....
[dateFromString release]; // <- wrong
Run Code Online (Sandbox Code Playgroud)
您可能想要:
//NSDate *dateFromString = [[NSDate alloc] init];
NSDate *dateFromString = [dateFormatter dateFromString:<NSString containing date>];
....
//[dateFromString release]; // dateFromString is autoreleased
Run Code Online (Sandbox Code Playgroud)
希望这可以救人:)
| 归档时间: |
|
| 查看次数: |
44668 次 |
| 最近记录: |