NSDateFormatter не удается создать дату, когда локальный телефон установлен в Ирландии и формат времени 12 часов [дубликат]

Наверное, я очень опаздываю на вечеринку.

Как уже говорилось ранее, вызов input.nextLine() после получения вашего значения int решит вашу проблему. Причина, по которой ваш код не работал, заключается в том, что с вашего ввода (куда вы ввели int) ничего не оставалось хранить в string1.

Рассмотрим nextLine () как нечетный среди методов nextFoo () в классе Scanner. Давайте возьмем быстрый пример. Скажем, у нас есть две строки кода, подобные приведенным ниже:

int firstNumber = input.nextInt();
int secondNumber = input.nextInt();

Если мы вводим значение ниже (как одну строку ввода)

54 234

Значение нашей переменной firstNumber и secondNumber становится 54 и 234 соответственно. Причина, по которой это работает, заключается в том, что новый канал ( i.e\n ) НЕ НЕ автоматически генерируется, когда метод nextInt () принимает значения. Он просто берет «следующий int» и движется дальше. Это то же самое для остальных методов nextFoo (), за исключением nextLine ().

nextLine () генерирует новый фид строки сразу после принятия значения; это то, что означает @RohitJain, говоря, что новый канал «потребляется».

Наконец, метод next () просто берет ближайшую строку без создания новой строки; это делает это предпочтительным методом для взятия отдельных строк в одной и той же строке.

Надеюсь, это поможет ... Веселая кодировка!

3
задан Vicente Crespo 8 September 2015 в 13:09
поделиться

2 ответа

При преобразовании строки даты ISO 8601 / RFC 3339 в объект NSDate используется языковой стандарт en_US_POSIX, если пользователь не использует григорианский календарь. См. Technical Q & amp; A 1480 .

В вашем случае вы пытаетесь получить представление строки года из объекта даты. В этом случае вам может не понадобиться en_US_POSIX. Это необходимо только в том случае, если вам нужно использовать григорианский календарь независимо от того, какой календарь может использоваться в настоящее время.

Как уже отмечалось другими, вы должны использовать yyyy, а не YYYY. Первый возвращает календарный год. Последний возвращает год в календаре на основе «Недели года», который не всегда может быть таким же значением, что и календарный год.

См. Шаблоны форматирования даты для обсуждения, контрастирующего y и Y.

Кстати, если вам действительно нужен компонент года в дате, вы также можете использовать связанные с NSDateComponents методы NSCalendar.

3
ответ дан Rob 24 August 2018 в 10:19
поделиться

Используйте yyyy вместо YYYY.

Ссылка .

2
ответ дан trojanfoe 24 August 2018 в 10:19
поделиться