Dateformatter возвращает неверный год для 2017-12-31 [дубликат]

Однажды я решил эту проблему, перемещая все inlines после определения класса и помещая #include для других классов непосредственно перед inlines в файле заголовка , Таким образом, убедитесь, что все определения + встроенные строки заданы до того, как строки синтаксического анализа проанализированы.

Выполнение этого действия позволяет по-прежнему иметь связку строк в обоих (или нескольких) файлах заголовков. .

Как это

// File: A.h
#ifndef __A_H__
#define __A_H__
class B;
class A
{
    int _val;
    B *_b;
public:
    A(int val);
    void SetB(B *b);
    void Print();
};

// Including class B for inline usage here 
#include "B.h"

inline A::A(int val) : _val(val)
{
}

inline void A::SetB(B *b)
{
    _b = b;
    _b->Print();
}

inline void A::Print()
{
    cout<<"Type:A val="<<_val<<endl;
}

#endif /* __A_H__ */

... и делает то же самое в B.h

32
задан Simon 14 September 2012 в 12:00
поделиться

1 ответ

YYYY не совпадает с yyyy.

В соответствии с эта страница , на которую ссылается страница формата даты IOS ;

`y`: Year
`Y`: Year (in "Week of Year" based calendars). This year designation is used in 
     ISO year-week calendar as defined by ISO 8601, but can be used in 
     non-Gregorian based calendar systems where week date processing is desired. 
     May not always be the same value as calendar year.

Оперативное предложение является последним. Вместо этого используйте yyyy.


Дальнейшая информация о том, как и почему значения года могут отклоняться при использовании YYYY:

Начало года нумерации ISO в первый день (понедельник) недели 01 и заканчивается в воскресенье перед новым годом ISO (следовательно, без перекрытия или разрыва). Он состоит из 52 или 53 полных недель. Номер года, обозначающий номер недели, отличается от числа традиционного григорианского календарного года в пятницу, субботу и воскресенье, а также в субботу и воскресенье или только в воскресенье в начале традиционного григорианского календарного года (которые находятся на конец предыдущего года недели по ИСО) и понедельник, вторник и среда, или понедельник и вторник, или только понедельник, в конце традиционного григорианского календарного года (который находится на неделе 01 следующей недели ИСО - номер года). Для четверга номер года номер годности ISO всегда равен традиционному номеру календарного года в григорианском языке.

Примеры:

Понедельник, 29 декабря 2008 года, написан «2009-W01-1»,

В воскресенье 3 января 2010 года написано «2009-W53-7»

Из https://en.wikipedia.org/wiki/ISO_8601#Week_dates (добавлен жирный стиль)

99
ответ дан Tom Pace 24 August 2018 в 17:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: