автоматизировать использование локального ключа SSH для развертывания git с ansible

Это, вероятно, проблема в вашем часовом поясе. Обратите внимание, что при анализе даты без времени предполагается, что время равно нулю. Однако некоторые конкретные времена не существуют, как правило, из-за изменения времени перехода на летнее время (которые происходят в марте по всему миру) или из-за конкретных локальных изменений времени.

Например, в Иордании изменение DST Apr 1 2016, 00:00 => Apr 1 2016, 01:00. Это означает, что время Apr 1 2016, 00:00 не существует, потому что March 31 2016, 23:59 становится немедленно Apr 1 2016, 01:00. Если дата не существует, форматировщик даты должен возвращать nil.

Обычно вы можете исправить эту проблему, используя предустановленный часовой пояс GMT, который не имеет этой проблемы, например

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

или

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:[NSTimeZone systemTimeZone].secondsFromGMT];

Обратите внимание, что поскольку вы не занимаетесь анализом времени, различия в часовых поясах не должны влиять на вас.

Шаги по воспроизведению

Установите часовой пояс на вашей машине в иорданский часовой пояс:

NSString *dateString = @"2016-04-01";
NSDateFormatter* parsingFormatter = [[NSDateFormatter alloc] init];
parsingFormatter.dateFormat = @"yyyy-MM-dd";

NSLog(@"Parsed: %@", [parsingFormatter dateFromString:dateString]); // "(null)"

с исправлением часового пояса:

NSString *dateString = @"2016-04-01";
NSDateFormatter* parsingFormatter = [[NSDateFormatter alloc] init];
parsingFormatter.dateFormat = @"yyyy-MM-dd";
parsingFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

NSLog(@"Parsed: %@", [parsingFormatter dateFromString:dateString]); // "2016-04-01 00:00:00 +0000"

30
задан oskargicast 18 July 2014 в 07:07
поделиться