如何将 Datetime 时间戳转换为 NSDate? 怎么反推?
我将日期时间转换为字符串的方法:
+(NSString*) dateTojson:(NSDate*)date{
return [NSString stringWithFormat:@"/Date(%f)/",(double)([date dateWithTimeIntervalSince1970] * 1000)];
}
我的逆向方法:
+(NSDate*) jsonToDate:(NSString *)json
{
double milisec = 0;
json = [[[json stringByReplacingOccurrencesOfString:@"/Date(" withString:@""] stringByReplacingOccurrencesOfString:@"/" withString:@""] stringByReplacingOccurrencesOfString:@"-0200" withString:@""];
NSArray *arr = [json componentsSeparatedByString:@"-"];
for(NSString *s in arr) {
if(![s isEqualToString:@""]){
milisec += [s doubleValue];
}
}
NSDate *date = [NSDate dateWithTimeIntervalSince1970:(milisec / 1000.0)];
return date;
}
当我使用 [self jsonToDate:@"/Date(1495497600)/"]
时,其中 1495497600 代表“05/23/2017”,该方法返回错误的日期(结果 =“01/18/1970”)。
为什么?
注意事项:
我不考虑时间,只考虑日期。
我的变量 milisec 等于 1495497600,所以我认为问题出在 dateWithTimeIntervalSince1970
方法上。
已经尝试过一些帖子,例如:
最佳答案
你真的不需要在最后除以毫秒:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:milisec];
结果:
2017-05-23 00:00:00 +0000
关于ios - 将 Datetime c# 转换为 Objective c 和反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44145396/