如何将NSString hexInterval转成NSTimeInterval进行日期转换

How to turn NSString hexInterval into NSTimeInterval for date conversion

目前,我正在使用以下格式的现有 NSDates 数组:

NSDate *today = [NSDate date]; //today is used as an example
NSTimeInterval interval = [today timeIntervalSince1970];
NSString *hexInterval = [NSString stringWithFormat:@"%08x", (int)interval];
NSLog(@"hexInterval %@", hexInterval);

日期以 4ec2acf0.

等格式输出

我的目标是将它们转回 NSDates,因为它们来自 NSTimeInterval,我想知道如何将它转回 NSTimeIntervals,因为我只有这些 8 个字符的 NSStrings。

我的目标是:

//Turn NSString into NSTimeInterval here, then:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];

谢谢!

你可以用 NSScanner 解析十六进制,像这样:

unsigned res = 0;
NSScanner *scanner = [NSScanner scannerWithString:hexInterval];
[scanner scanHexInt:&res];
NSTimeInterval interval = (NSTimeInterval)res;
// Once you have an interval, use your code:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];

请注意,此方法会截断 NSTimeInterval 的时间部分。当您在此行将 NSTimeInterval 转换为 int 时会发生这种情况:

NSString *hexInterval = [NSString stringWithFormat:@"%08x", (int)interval];