Разница между dateFromString и stringFromDate для этого шаблона 'YYYY' - PullRequest
0 голосов
/ 06 января 2020

хочу понять разницу между разницей между dateFromString и stringFromDate для этого шаблона "YYYY" .

Поскольку я написал приведенную ниже логику для dateFromString и stringFromDate, но результат отличается, как Понедельник c 30 09:05:00 2019 и 2020/12/30 09: 05

// convert string to date
     NSString *dateStr = @"2019-12-30 09:05";
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"YYYY-MM-dd HH:mm"];
        //NSDate *date = [dateFormat dateFromString:dateStr];
        NSDate *dateValue = [dateFormat dateFromString:dateStr];
        NSLog(@"string to date == %@",dateValue);



        // convert date to string

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

        NSLocale *locale = [NSLocale currentLocale];
        [df1 setLocale:locale];

        [df1 setDateFormat:@"YYYY/MM/dd HH:mm"];
        NSString *datestr = [df1 stringFromDate:dateValue];
        NSLog(@"date to string == %@", datestr);

, поэтому выход ниже

 string to date == Mon Dec 30 09:05:00 2019
 date to string == 2020/12/30 09:05

Оба или одинаковые паттерны ГГГГ Работает как недельный каландр. но почему значения года 2019 и 2020 отличаются при использовании следующих методов dateFromString и stringFromDate ?

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Номер недели 2019-12-30 - это 1-я неделя 2020 года. Год 1-й недели 2020 года - 2020. Попробуйте формат yyyy/MM/dd HH:mm YYYY w (неделя года), в результате получите 2019/12/30 09:05 2020 1.

0 голосов
/ 06 января 2020

Когда вы используете yyyy, вы получите номер календаря c year. ГГГГ вы получите неделю года, которая может выполнить этот перенос границы, который вы испытываете. Читайте документы по адресу: http://www.unicode.org/reports/tr35/tr35-dates.html#dfst -год

Всегда, когда у меня возникают проблемы с форматерами даты, я обычно go на этот сайт https://nsdateformatter.com/.

...