如何将日期字符串如“2011-01-12T14:17:55.043Z”转换为长1294841716?

时间:2011-01-26 19:43:59

标签: iphone objective-c ios date

我需要以这种字符串格式转换日期:

“2011-01-12T14:17:55.043Z”

到1294841716之类的数字(这是1970年1月1日以来的秒数[不是毫秒])。有没有简单的方法来进行解析?

更新:这是我到目前为止的代码:

NSString *dateString = @"2011-01-12T14:17:55.043Z";
NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"yyyy-MM-ddTHH:mm:ss.nnnZ"];
NSDate *parsed = [inFormat dateFromString:dateString];
long t = [parsed timeIntervalSinceReferenceDate];

t每次都回到0。

1 个答案:

答案 0 :(得分:18)

使用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:@"2011-01-12T14:17:55.043Z"];
NSLog(@"Date: %@", date);
NSLog(@"1970: %f", [date timeIntervalSince1970]);
NSLog(@"sDate: %@", [formatter stringFromDate:date]);
[formatter release];