从NSDate的NSString的 - dateFromString返回nil(NSDate fr

2019-07-28 20:23发布

我想从日期的字符串的NSDate对象,但它返回零。 我究竟做错了什么? 谢谢!

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

Answer 1:

该“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当前时区的默认格式。

请参阅: Date_Field_Symbol_Table



Answer 2:

它应该是yyyy

[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];


Answer 3:

使用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];

希望能帮助到你。



文章来源: NSDate from NSString - dateFromString returns nil