NSString到NSDate转换问题:始终是同一日期!
这里是我的解析类方法NSString
的NSDate
对象。 代码如下:
+ (NSDate *) stringToDate:(NSString *) string { NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.AAA Z"]; NSDate *date = [dateFormatter dateFromString:string]; NSLog(@"stringToDate("%@") = '%@'", string, date); [dateFormatter release]; return date; }
并运行它我得到以下输出:
stringToDate("2011-07-07 16:26:07.000 +0200") = '2011-07-06 22:00:00 +0000' stringToDate("2011-07-07 16:26:17.000 +0200") = '2011-07-06 22:00:00 +0000'
...相同的输出! 你可以帮我吗?
如果我弄清楚你的问题,那么这两个日期并不完全相同。
如果这是问题,那就行
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
对此负责。 它将给定的时间对象转换为GMT + 00时区。
你应该写:
NSLog(@"stringToDate("%@") = '%@'", string,
[dateFormatter stringFromDate:date]);
否则, NSLog
调用你的date
对象的description
方法。 以下是文档中关于此方法的说明:
描述
返回接收器的字符串表示形式。
- (NSString *)说明
返回值
以国际格式YYYY-MM-DD HH:MM:SS±HHMM表示接收机的字符串表示形式,其中,±HHMM表示GMT和GMT之间的时区偏移(例如,“2001-03-24 10:45 :32 +0600“)。
如您所见,格式与您使用的格式不完全相同。
编辑
试着改变你的DATEFORMAT参数dateFormatter
到yyyy-MM-dd HH:mm:ss Z
并使用[dateFormatter stringFromDate:date]
以显示日期。
上一篇: NSString to NSDate conversion problem: always the same date!
下一篇: NSDate format issue