【问题标题】:NSDateFormatter confused by 24-hour timeNSDateFormatter 对 24 小时制感到困惑
【发布时间】:2013-04-21 05:28:59
【问题描述】:

我正在构建一个依赖于带有 SQL 数据库的服务器的应用程序。数据库会自动存储如下所示的时间戳:

2013-04-26 22:56:05    

我的服务器上有一个 URL,其中包含一个 PHP 文件,该文件获取数据并将 echos 以 JSON 格式返回到应用程序。

应用获取数据时,时间戳还是一样的——timestamp = "2013-04-26 22:56:05";

NSString *timestamp = [mArray[1] objectForKey:@"timestamp"];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:timestamp];
NSLog(@"NSDATE: %@", date);

结果为:NSDATE: 2013-04-27 04:56:05 +0000。这显然不一样。

我的服务器是北弗吉尼亚 (EDT) 的 Linux 机器,我在 MDT 上。

【问题讨论】:

  • 实际上,我想我误读了您的问题。我以为你在谈论设置应用程序中的 24 小时时间设置。当您记录 NSDate 时,日期始终以 UTC 时间显示。你的两个日期是一样的。每年的这个时间 MDT 是 UTC -6 小时。所以 22:56 MDT 是第二天 04:56 UTC。一切如预期。虽然这并不能完美地解释它,因为 EDT 是 UTC -4 并且您似乎使用的是 EDT,而不是 MDT。

标签: ios json timezone nsdate nsdateformatter


【解决方案1】:

终于明白了。

我的服务器是 UTC 时间!我变了

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]];

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

现在它按预期工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2012-07-22
    • 2013-05-13
    • 2020-04-16
    • 2023-03-08
    相关资源
    最近更新 更多