Создание даты из строки - PullRequest
       10

Создание даты из строки

1 голос
/ 19 января 2011

У меня проблемы с получением сегодняшнего времени из строки.Я читаю время из UITextField, но дата выходит как начало эпохи

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH-mm"];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setLenient:YES];

NSLog(@"Format: %@",[formatter dateFormat]);    
NSDate *now = [formatter dateFromString:[textbox text]];
NSLog(@"Time from textfield: %@",now]);

Это дает следующую дату из кода журнала.

2011-01-19 18:56:28.193 MyApp[8284:207] The time for now: 1970-01-01 06:00:00 GMT

Ответы [ 2 ]

1 голос
/ 19 января 2011

Установка dateStyle и timeStyle для форматера переопределит dateFormat, который вы установили вручную. Следующее должно работать как ожидалось:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH-mm"];
[formatter setLenient:YES];

NSLog(@"Format: %@",[formatter dateFormat]);

[formatter release];

Полученный объект даты будет близок к началу эпохи, потому что вы не указываете год, месяц и день. Если вы хотите, чтобы время в текстовом поле представляло время на сегодняшнюю дату, вам придется добавить дополнительный код:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH-mm"];
[formatter setLenient:YES];
NSDate *time = [formatter dateFromString:[textbox text]];
[formatter release];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:NSYearCalendarUnit |
                                               NSMonthCalendarUnit |
                                               NSDayCalendarUnit |
                                               NSHourCalendarUnit |
                                               NSMinuteCalendarUnit
                                      fromDate:[NSDate date]];
NSDateComponents *timeComps = [calendar components:NSHourCalendarUnit |
                                                   NSMinuteCalendarUnit
                                          fromDate:time];

[comps setHour:[timeComps hour]];
[comps setMinute:[timeComps minute]];
NSDate *date = [calendar dateFromComponents:comps];
NSLog(@"Date from textfield: %@",date);
0 голосов
/ 19 января 2011
NSDate *todayDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *currentTime = [dateFormatter stringFromDate:todayDate];
NSLog(@"The current time is:%@",currentTime);
[dateFormatter release];
...