NSDateFormater stringFromDate to dateFromString return 错误的日期

NSDateFormater stringFromDate to dateFromString return wrong date

我的代码:

    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);

并在日志中 returns

'03-02-2017'

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

'25 Dec 2016'

有人知道为什么会这样吗?我在 google 中搜索大多数情况是由时区引起的。但是,我很确定这与时区无关,因为日期差异太大,但我无法找出问题的根源。

我认为你的日期格式不对。

应该是

dd-MM-yyyy

我从回答中发现我的格式不对objective-c - NSDateFormatter returns wrong date

并参考 http://nsdateformatter.com 。 它应该是 "yyyy" 而不是 "YYYY"