Как превратить NSString в NSDate? - PullRequest
5 голосов
/ 13 января 2011

Я ломал голову без удачи.Может кто-нибудь сказать, пожалуйста, как мне преобразовать эту строку:

"2011-01-13T17: 00: 00 + 11: 00"

в NSDate?

Ответы [ 5 ]

20 голосов
/ 13 января 2011

Формат даты в формате Unicode: здесь

Также, для вашей ситуации, вы можете попробовать это:

// original string
NSString *str = [NSString stringWithFormat:@"2011-01-13T17:00:00+11:00"];

// convert to date
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
// ignore +11 and use timezone name instead of seconds from gmt
[dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'+11:00'"];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]];
NSDate *dte = [dateFormat dateFromString:str];
NSLog(@"Date: %@", dte);

// back to string
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init];
[dateFormat2 setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZZZ"];
[dateFormat2 setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]];
NSString *dateString = [dateFormat2 stringFromDate:dte];
NSLog(@"DateString: %@", dateString);

[dateFormat release];
    [dateFormat2 release];

Надеюсь, это поможет.

3 голосов
/ 13 января 2011

поместите часть T в одинарные кавычки и проверьте документацию Unicode для точного форматирования. В моем случае у меня есть нечто подобное, что я делаю так:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss.SSS"];

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

Опять же, в моем случае я использую:

[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
1 голос
/ 13 января 2011

Вы пробовали это

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *dateT = [dateFormatter dateFromString:str];

Приветствия

0 голосов
/ 16 апреля 2014

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

"Категория для расширения класса NSDate у Cocoa с помощью некоторых вспомогательных функций."пример с их страницы:

NSDate *date = [NSDate dateFromString:@"2009-03-01 12:15:23"];
0 голосов
/ 10 апреля 2013

Вы можете проверить TouchTime.

https://github.com/jheising/TouchTime.

Это прямой порт функции strtotime в PHP в 5.4 для Cocoa и iOS. Он примет практически любой произвольный формат строки даты или времени и преобразует его в NSDate.

Надеюсь, что это работает, и наслаждайтесь!

...