NSDate将于12月31日滚动到明年

时间:2017-04-27 17:37:23

标签: nsdate nsdateformatter

如果我有这个日期:

dtToUse __NSTaggedDate *    2017-12-31 05:00:00 UTC

我使用此方法从字符串中获取:

- (NSDate*) convertStringToDate : (NSString*) strToConvert andTheFormatToUse: (NSString*) strFormat {

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:strFormat];

    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];

    return [dateFormatter dateFromString:strToConvert];
}

我使用此代码显示它:

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MM/dd/YYYY"];
    NSString* strDate = [dateFormatter stringFromDate:dtExpiration];

    self.txtCurrentField.text = [dateFormatter stringFromDate:dtExpiration];

但无论我做什么,年份增加1 - 所以2017年变为2018

这只发生在12月31日,任何一年。我怀疑这是一个时区问题,但我不确定如何修复,因为我已将时区转换为本地

1 个答案:

答案 0 :(得分:1)

试试

  

[dateFormatter setDateFormat:@“MM / dd / yyyy”];

而不是

  

[dateFormatter setDateFormat:@“MM / dd / YYYY”];

之后,它将显示12/31/2017。

YYYY和yyyy之间的差异。 https://stackoverflow.com/a/15133656/1342266