【问题标题】:Error when converting NSString to NSDate将 NSString 转换为 NSDate 时出错
【发布时间】:2014-12-06 18:37:02
【问题描述】:

我正在尝试将“NSString”转换为“NSDate”。今天早上我的代码在 iOS 7 上工作,现在在 iOS 8 模拟器上不工作......我安装了 iOS 7 模拟器来尝试解决这个问题,但它并没有改变任何东西。这是我的代码:

NSString *query = [components objectAtIndex:i];
NSDateFormatter *newformatter = [[NSDateFormatter alloc]init];
[newformatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate * testdate = [newformatter dateFromString:query];
NSLog(@"Query : %@   Test date format : %@", query,testdate);

结果是:

查询:2014-10-11 20:02:50 测试日期格式:(null)

为什么yyyyy?

【问题讨论】:

    标签: ios objective-c ios8 type-conversion ios-simulator


    【解决方案1】:

    您的日期格式化程序不正确。您应该使用 HH 而不是 hh,因为它是 24 小时制。

    [newformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    

    我建议收藏this reference

    【讨论】:

    • 你同意。我的模拟器应该在 12 小时前
    【解决方案2】:

    什么是*查询?

    我认为您缺少日期字符串,如下所示:

    NSString *dateString = "10-10-2014";
    

    还有他们

      NSDate *dateFromString = [[NSDate alloc]init];
     dateFromString = [newFormatter dateFromString:dateString]; // newFormatter is the format you showed in your example.
    

    【讨论】:

    • 他登录了query,显然是字符串2014-10-11 20:02:50
    • 看起来不起作用.. Query 是一个 NSString。它已正确填写,因为您可以在 NSLog 中看到它已正确打印。
    【解决方案3】:

    您需要设置格式化程序的语言环境

    [dateFormatter setLocale: [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]
    

    还可以尝试打开上午/下午设置,然后关闭。

    【讨论】:

    • 如果他要设置该区域设置,那么设备的 12 小时或 24 小时时钟设置将没有任何区别。
    • 当然。只是想让他确定这两起案件。
    猜你喜欢
    • 2016-09-01
    • 2016-09-21
    • 2011-04-24
    • 2017-04-23
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多