【问题标题】:NSDateformatter returns wrong date from an asp.NET dateNSDateformatter 从 asp.NET 日期返回错误的日期
【发布时间】:2014-01-11 14:14:37
【问题描述】:

我正在使用 restkit 将我的 JSON 映射到 coredate。在这个JSON 中,我找到了ASP.Net dates。当我尝试将它们映射到 core date 时,我有时会看到日期提前一天。

Date: "/Date(1389740400000+0100)/"

这就是我在代码中添加 defaultDateFormatter 的方式。

   RKDotNetDateFormatter *dateFormatter = [RKDotNetDateFormatter new];
        [dateFormatter  setDateFormat:@"yyyy-MM-dd hh:mm:ss ZZZZ"];
        dateFormatter.timeZone = [NSTimeZone defaultTimeZone];
        dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

        [RKEntityMapping addDefaultDateFormatter:dateFormatter];

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你如何查看日期?日志记录通常会应用您当地的时区,因此可能会导致感知差异......

标签: asp.net objective-c nsdate restkit nsdateformatter


【解决方案1】:

试试

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

【讨论】:

    【解决方案2】:

    我怀疑您遇到了 GMT 差异。尝试改用systemTimeZone

    dateFormatter.timeZone = [NSTimeZone systemTimeZone];
    

    【讨论】:

    • 还是有同样的问题。有些日期可以,但有些日期不行。
    • 当我执行 stringFromDate 时,我得到这个 2014-01-14 23:00:00 +0000 --> 通常应该是 2014-01-15
    • 鉴于您的示例日期末尾的+0100,这不是意料之中的吗? +0100 从 2014-01-15 是 2014-01-14 23:00:00。
    • mm 很奇怪,那我该如何禁用它呢?因为我需要它是 2014-01-15
    • 您可以使用字符串操作将 JSON 中的任何内容剥离到 + 右侧(包括 +),但这可能并非在所有情况下都完全准确。如果此日期是您在应用程序的其他位置保存的日期,则应考虑更改该代码以将日期保存为 UTC。在您给定的情况下,您认为 2014-01-15 是正确的,但是会有一个时间/场景不是正确的值。
    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多