NSDateFormater stringFromDate到dateFromString返回错误的日期

时间:2017-02-17 03:53:35

标签: objective-c nsstring nsdate nsdateformatter nslocale

我的代码:

    NSString *dateStr = @"03-02-2017";//[responseObject objectForKey:@"event_date"];
    NSLog(@"'%@'", dateStr);
    // Convert string to date object
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_HK"];
    [dateFormat setLocale:locale]; //To fix the format into something like: 10 Feb 2017, but not: 10 2月 2017
    [dateFormat setDateFormat:@"dd-MM-YYYY"];
    NSDate *date = [dateFormat dateFromString:dateStr];
    NSLog(@"'%@'", date);
    // Convert date object to desired output format
    [dateFormat setDateFormat:@"dd MMM YYYY"];
    dateStr = [dateFormat stringFromDate:date];
    NSLog(@"'%@'", dateStr);

在日志中返回

  

' 2017年3月2日'

     

' 2016-12-24 16:00:00 + 0000'

     

' 2016年12月25日'

任何人都知道为什么会这样吗?我在谷歌搜索大多数情况是由时区造成的。但是,我很确定它不是关于timeZone的,因为日期的差异太大了,但我无法弄清楚这个问题的根源。

2 个答案:

答案 0 :(得分:1)

我认为你的日期格式错误。

应该是

dd-MM-yyyy

答案 1 :(得分:0)

我在回答objective-c - NSDateFormatter returns wrong date

时发现我的格式错误

并由http://nsdateformatter.com引用。 它应该是“yyyy”而不是“YYYY”