NSString到NSDate转换问题:始终是同一日期!

这里是我的解析类方法NSStringNSDate对象。 代码如下:

+ (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参数dateFormatteryyyy-MM-dd HH:mm:ss Z并使用[dateFormatter stringFromDate:date]以显示日期。

链接地址: http://www.djcxy.com/p/35165.html

上一篇: NSString to NSDate conversion problem: always the same date!

下一篇: NSDate format issue