JSON относится к выпуску NSDate
У меня есть строка даты в формате JSON, она выглядит так:
2013-05-22T10: 54: 40,437
И я пытаюсь преобразовать его в NSDate.
- (NSString *)dateFromString:(NSString *)datestring{
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss"];
NSDate *date = [dateFormat dateFromString:datestring];
//date is nil here.
NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
[newDateFormatter setDateFormat:@"MM/dd/yyyy"];
NSString *newString = [newDateFormatter stringFromDate:date];
NSLog(@"Date -- %@",datestring);
return newString;
}
Но дата равна nil после dateFromString. Кто-нибудь знает, что я сделал здесь неправильно?
Спасибо!
Ответы
Ответ 1
Используйте этот формат даты:
yyyy-MM-dd'T'HH:mm:ss.SSS
Ваш код с небольшой модификацией:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
NSDate *date = [dateFormat dateFromString:datestring];
NSDateFormatter *newDateFormatter = [[NSDateFormatter alloc]init];
[newDateFormatter setDateFormat:@"MM/dd/yyyy"];
NSString *newString = [newDateFormatter stringFromDate:date];
NSLog(@"Date: %@, formatted date: %@", date, newString);
дает мне этот результат:
Date: 2013-05-22 08:54:40 +0000, formatted date: 05/22/2013
Изменить: как заметил "ikinci viking" в комментарии, избегать тире не нужно. Удаление из кода
Ответ 2
Ваш формат даты неверен. Это должно быть:
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:SSS"];
Три капитала "S" означают, что он примет дробную часть до трех цифр. Отрегулируйте его так, как вы.
Ответ 3
If your date format is "2014-02-25T13:05:10+00:00" then,
your code should be like this....
NSURL *url = [NSURL URLWithString:@"your URL"];
NSString *str = [[NSString alloc] initWithContentsOfURL:url usedEncoding:Nil error:Nil];
NSDateFormatter *dateFor = [[NSDateFormatter alloc] init];
[dateFor setDateFormat:**@"yyyy-MM-dd'T'HH:mm:ss'+'SS:SS"**];
NSDate *yourDate = [dateFor dateFromString:str];
NSLog(@"Your Date: %@",yourDate);
Ответ 4
-(void)viewDidLoad {
self.date = [dateForRFC3339DateTimeString:@"2015-01-18T01:00:00.000Z"];
}
-(NSDate *)dateForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString {
NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init];
[rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"];
[rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
// Convert the RFC 3339 date time string to a NSDate.
NSDate *result = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];
return result;
}