我想从日期字符串中获取NSDate对象,但它返回nil。我究竟做错了什么?谢谢!
NSString *dateString = @"2012-04-05T13:27:32.369Z";
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss.SSSZ"];
NSDate* date = [df dateFromString:dateString];
NSLog(@"1%@",date);
[df release];
答案 0 :(得分:4)
必须引用“Z”:
NSDateFormatter* df = [[NSDateFormatter alloc]init];
NSString *dateString = @"2012-04-05T13:27:32.369Z";
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate* date = [df dateFromString:dateString];
NSLog(@"1: %@",date);
NSString *newDateString = [df stringFromDate:date];
NSLog(@"2: %@",newDateString);
NSLog输出:
1:2012-04-05 17:27:32 +0000
2:2012-04-05T13:27:32.369
请注意,NSLog
使用NSDate
默认格式化程序与当前时区。
答案 1 :(得分:1)
多年来应该是yyyy
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
答案 2 :(得分:0)
使用NSDateFormatter获取NSDate然后使用 - (NSTimeInterval)timeIntervalSince1970获取自1970年以来的秒数。
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate *date = [formatter dateFromString:@"2012-04-05T13:27:32.369Z"];
NSLog(@"Date: %@", date);
NSLog(@"1970: %f", [date timeIntervalSince1970]);
NSLog(@"sDate: %@", [formatter stringFromDate:date]);
[formatter release];
希望它有所帮助。