NSDateformatter无法在IOS 7.0.4中运行

时间:2013-11-20 15:36:22

标签: ios objective-c ios7 nsdateformatter

我使用NSDateformatter来解析日期。它工作正常,直到我更新到iOS 7.0.4。但是自从更新后我获得了零值,

这是我尝试解析的日期

11/20/2013 3:30:05 PM

以下是相同

的代码
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
[dateFormatter1 setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormatter1 dateFromString:[items objectAtIndex:2]];

但是我的约会时间为零。

如何在IOS 7.0.4中完成这项工作?

3 个答案:

答案 0 :(得分:4)

您的日期已本地化,但您正在将设备用作其语言环境。 但AM / PM在其他语言环境中可能有所不同。

-(void)dateTest {
    NSString *inputDate = @"11/20/2013 3:30:05 PM";
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
    [dateFormatter1 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    NSDate *date = [dateFormatter1 dateFromString:inputDate];
    NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000
}

答案 1 :(得分:2)

你能发布[items objectAtIndex:2]中存储的字符串吗? 我试一试,它对我来说很好用:

-(void)dateTest
{
    NSString *inputDate = @"11/20/2013 3:30:05 PM";
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a";
    [dateFormatter1 setLocale:[NSLocale currentLocale]];
    NSDate *date = [dateFormatter1 dateFromString:inputDate];
    NSLog(@"date: %@", date); //OUTPUT date: 2013-11-20 15:30:05 +0000
}

答案 2 :(得分:0)

如果显示不同的小时,您可能需要设置默认时区(这只发生在ios7之后)

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

似乎默认时区是设备所具有的时区,因此如果您没有指定默认时区,您可能会得到奇怪的结果。在ios7之前,它总是GMT。