我有一个Web服务,它返回人的出生日期。我遇到的问题是,当出生年份大约在1899年时,时间会减少几个小时。然而,它到1970年越接近它就越准确。出生年份是在1970年之后没有问题。
通过日期 - 1899-12-31 16:00:00 +0000
返回日期 - 1899-12-31 22:55:25 +0000(加上时间差+0800)
1970年以后很好]
通过日期 - 1990-08-24 16:00:00 +0000
返回日期 - 1990-08-25 00:00:00 +0000
我正在使用目标c
jsonDateString是传递字符串
double dateNumber = [[jsonDateString substringWithRange:NSMakeRange(startPosition, 1)] isEqualToString:@"-"] ? - [[jsonDateString substringWithRange:NSMakeRange(startPosition + 1, 13)] doubleValue] : [[jsonDateString substringWithRange:NSMakeRange(startPosition, 13)] doubleValue];
NSTimeInterval unixTime = dateNumber / 1000; //WCF will send 13 digit-long value for the time interval since 1970 (millisecond precision) whereas iOS works with 10 digit-long values (second precision), hence the divide by 1000
// time changes***** - by ashan
NSDate *gmtDate = [[NSDate dateWithTimeIntervalSince1970:unixTime]dateByAddingTimeInterval:0];
NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMTForDate:gmtDate];
NSDate *localDate = [gmtDate dateByAddingTimeInterval:timeZoneOffset];
JsonString - / Date(-2209017600000 + 0800)/
divideby1000:-2209017600.000000
通过日期 - 1899-12-31 16:00:00 +0000
返回日期 - 1899-12-31 22:55:25 +0000
正如你所看到的那样,你甚至可以转换时间标记,它表示1600和+8将是0000.它如何显示1100h。是1970年之前的纪元unix时序还是服务器端的db问题。