8

我正在使用以下代码,它在 iPhone OS 3.2 中运行良好

+(NSDate *)NSDateFromString:(NSString *)dateString
{

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateStyle:NSDateFormatterShortStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *dateObj=[dateFormatter dateFromString:dateString];
    [dateFormatter release], dateFormatter=nil;
    return dateObj;
}

但是当我尝试使用与 iPhone OS 4.0 相同的代码时,dateObj 为零。

原因是 :

- (id)initNSDateFormatter 的方法仅在 iPhone OS 2.0 到 iPhone OS 3.2 中可用。它在 iPhone OS 4.0 中已弃用。

现在解决方案是什么?如何初始化 NSDateFormater?有什么选择?

4

3 回答 3

2

[NSDateFormatter dateFormatFromTemplate:options:locale:] might work better

NSString *format = [NSDateFormatter
                   dateFormatFromTemplate:@"Mdjm"
                                  options:0
                                   locale:[NSLocale currentLocale]];

// "M/d h:mm a" // US English format returned for US locale

[dateFormatter setDateFormat:format];
NSDate *date = [dateFormatter dateFromString:dateString];
于 2010-07-11T20:12:12.383 回答
2

在 iOS2.x 和 3.x 中,NSDate description/datefromstring 函数返回:2010-09-24 17:30:00 - 0700

在 iOS 4.1 中,它返回:2010-09-25 00:30:00 GMT

你可以向苹果提交一个错误。它甚至不遵循规定它应该为偏移返回 0000 的规范。因此,它不仅不返回本地日期,而且还使用 GMT 而不是偏移量。这种新格式似乎与 NSDateFormatter 方法不兼容。

另外,我不认为这是文档中的错误。在 API Diff 文档中,它列出了为 NSDateFormatter 删除的 init。

于 2010-10-15T04:49:48.613 回答
2

- (id)init在 iOS4 中,NSDateFormatter 不被弃用。这是文档中的错误。

于 2010-07-11T09:45:46.683 回答