【问题标题】:NSDateFormatter incorrect date conversionNSDateFormatter 日期转换不正确
【发布时间】:2015-09-10 04:52:12
【问题描述】:

我正在使用 NSDateFormatter,将 NSString 转换为 NSDate。

例如,如果我的 NSString 值为 Jun 24,2015 那么它会被转换为 2015-06-23 18:30:00 +0000,这是不正确的.

应该是“24”而不是“23”。

我正在使用下面的代码进行转换。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd,yyyy"];
NSLog(@"%@",[formatter dateFromString:strDate]);

请帮我解决问题。

谢谢

【问题讨论】:

    标签: ios iphone nsdate nsdateformatter


    【解决方案1】:

    添加NSTimeZone的行:

       NSString *dateString = @"Jun 24,2015";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MMM dd,yyyy "];
    dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    NSLog(@"%@",[dateFormatter dateFromString:dateString]);
    

    【讨论】:

    • 我使用的代码和你建议的代码没有区别。
    • 查看我的更新答案,它的完美作品@ArvinderSingh
    【解决方案2】:

    这可能会对您有所帮助。添加以下代码。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    

    【讨论】:

      【解决方案3】:

      您的NSDateFormatter 将值作为本地日期格式(IST,GMT +5:30),然后将其转换为 GMT。它将您的值设为 2015 年 6 月 24 日上午 00:00,并根据 GMT 18:30 2015 年 6 月 23 日将其转换为实际时间前 5 小时 30 分钟,因此只需添加

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

      它会正常工作的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2016-12-14
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        相关资源
        最近更新 更多