【问题标题】:Converting string into date returns wrong result将字符串转换为日期返回错误的结果
【发布时间】:2016-05-05 10:12:25
【问题描述】:

我有Mon, 18 Apr 2016 07:29:49 GMT的字符串形式的日期,现在我正在尝试通过这样做将其转换为日期对象

NSDateFormatter *parsingFormatter = [NSDateFormatter new];
[parsingFormatter setDateFormat:@"EE, dd MMM YYYY hh:mm:ss Z" ];
NSDate *date = [parsingFormatter dateFromString:@"Mon, 18 Apr 2016 07:29:49 GMT"];

但是当我在date 对象中看到结果时,它包含以下日期2015-12-21 07:29:49 +0000

有人能说出为什么将日期从 2016 年 4 月 18 日更改为 2015 年 12 月 21 日吗?

【问题讨论】:

    标签: ios objective-c swift nsdate nsdateformatter


    【解决方案1】:

    YYYY 是基于周的日历年。

    yyyy是普通日历年。

    喜欢

    NSDateFormatter *parsingFormatter = [NSDateFormatter new];
    [parsingFormatter setDateFormat:@"EE, dd MMM yyyy hh:mm:ss Z"];
    [parsingFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSDate *date = [parsingFormatter dateFromString:@"Mon, 18 Apr 2016 07:29:49 GMT"];
    

    斯威夫特

    let parsingFormatter: NSDateFormatter = NSDateFormatter()
    parsingFormatter.dateFormat = "EE, dd MMM yyyy hh:mm:ss Z"
    parsingFormatter.timeZone = NSTimeZone.localTimeZone()
    let date: NSDate = parsingFormatter.dateFromString("Mon, 18 Apr 2016 07:29:49 GMT")
    

    你得到的输出

    【讨论】:

    • 一律使用普通日历年
    【解决方案2】:

    你写的日期格式应该是错误的,

    [parsingFormatter setDateFormat:@"EE, dd MMM yyyy hh:mm:ss Z" ];
    

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2013-10-03
      • 2013-08-04
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      相关资源
      最近更新 更多