2

I have a date string in JSON format that looks like this: 2014-02-07T00:00:00+08:00

And I'm trying to convert it to NSDate with format MM/dd/yyyy.

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);

But the result is nil. What's wrong?

Can
  • 8,502
  • 48
  • 57
lhencq
  • 505
  • 2
  • 6
  • 16
  • Refer this link http://stackoverflow.com/questions/21522418/dateformatter-string-for-date-type-2013-03-24t021523-0800-objective-c/21522865#21522865 – RAJA Feb 24 '14 at 06:40

1 Answers1

3

The correct date format is:

[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssxxx"];

or

[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];

See: ICU Formatting Dates and Times

NSString *datestring = @"2014-02-07T00:00:00+08:00";

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:sszzz"];
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);

NSLog output:

Date: 2014-02-06 16:00:00 +0000, formatted date: 02/06/2014

zaph
  • 111,848
  • 21
  • 189
  • 228