2015-08-09 2 views
1

2014/03/30 02:00 -> 02:59Не удается получить dateFromString на один определенный час

Я разбор CSV для подготовки базовой нейронной сети. Каждой строке соответствует одна минута. В коде нет проблем с анализом остальной части 2014 года, но этот час приводит к значению nil. Нет никакой разницы в обозначениях.

Я также пробовал на детской площадке. Та же проблема. Просто вставьте код ниже на детскую площадку и измените час или день.

var dateFormatter = NSDateFormatter() 

dateFormatter.dateFormat = "yyyy/MM/dd HH:mm" 

let dateString : String = "2014/03/30 02:53" 


if dateFormatter.dateFromString(dateString) == nil { 

    print("bad date \(dateString)") 


} else { 
    let date : NSDate = dateFormatter.dateFromString(dateString)! 
    let newDateString = dateFormatter.stringFromDate(date) 


} 

2014/03/30 02: 55,1017,0,1.917,70.8,5.074,99,0,13.84

2014/03/30 02: 56,1017,0,2.146, 65.26,5.036,99,0,13.84

2014/03/30 02: 57,1017,0,1.313,71.2,5.033,99,0,13.84

2014/03/30 02:58, 1017,0,1,292,74,9,5,047,99,0,13,84

2014/03/30 02: 59,1017,0,2,126,68,76,5.039,99,0,13.83

2014/03/30 03: 00,1017,0,1.438,61.02,5.011,99,0,13.84

2014/03/30 03: 01,1017,0,2.333,66.73,4.981, 99,0,13.84

Рабочий код:

UTC часовой пояс не имеет Daylight Savings

var dateFormatter = NSDateFormatter() 
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") 

dateFormatter.dateFormat = "yyyy/MM/dd HH:mm" 

let dateString : String = "2014/03/30 02:53" 


if dateFormatter.dateFromString(dateString) == nil { 

    print("bad date \(dateString)") 


} else { 
    let date : NSDate = dateFormatter.dateFromString(dateString)! 
    let newDateString = dateFormatter.stringFromDate(date) 


} 
+1

Какой часовой пояс вы используете? Я предполагаю, что здесь часы регулируются на один час вперед для перехода на летнее время, а это значит, что в этот день нет «02:00». –

+0

Мне тоже было интересно об этом. Я не знал, как он справляется с летним временем. Теперь я делаю .... Я поменю местный и повторю попытку. Также ваш комментарий больше напоминает ответ, чем первый ответ. Если вы опубликуете его как таковой, я могу его принять! –

+0

похоже: http://stackoverflow.com/questions/22272089/ios-nsdateformatter-datefromstring-returns-nil-only-in-one-instance, http://stackoverflow.com/questions/12922645/why-does-nsdateformatter -подробнее-ноль-дата-для-этих-4-часовых зон, http://stackoverflow.com/questions/23833038/a-bug-nsdateformatter-datefromstring-returns-null-only-for-this-date-string , –

ответ

3

Вы не можете получить dateFromString, потому что этот конкретный час имеет не существует. В 2014/03/30 из-за изменения летнего времени время 2:00 - 2:59 только что пропущено в вашем часовом поясе.

Смежные вопросы