Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSDate自0001年1月1日以来的.NET滴答声_Ios_Objective C_.net_Timestamp_Nsdate - Fatal编程技术网

Ios NSDate自0001年1月1日以来的.NET滴答声

Ios NSDate自0001年1月1日以来的.NET滴答声,ios,objective-c,.net,timestamp,nsdate,Ios,Objective C,.net,Timestamp,Nsdate,我正在使用一个API,该API以.NET ticks格式返回时间戳,我认为从0001年1月1日起,时间戳的格式为100纳秒。最终得到一个非常大的数字,比如635492330000000(仅从内存中键入) 当我从API中得到数字时,它在NSNumber中,但它太大了,无法在32位设备上转换为整数,无法进行数学运算并将其转换为秒。如何将其转换为NSDate?使用long它可以像这样处理大量的数字。您可以从NSSNumber

我正在使用一个API,该API以.NET ticks格式返回时间戳,我认为从0001年1月1日起,时间戳的格式为100纳秒。最终得到一个非常大的数字,比如635492330000000(仅从内存中键入)


当我从API中得到数字时,它在NSNumber中,但它太大了,无法在32位设备上转换为整数,无法进行数学运算并将其转换为秒。如何将其转换为NSDate?

使用
long
它可以像这样处理大量的数字。您可以从
NSSNumber

将其转换为日期

NSNumber *dateNumber = @(635492330000000);   //Your Number
NSDate *date =  [NSDate dateWithTimeIntervalSince1970: ([dateNumber longLongValue]-621355968000000L)/10000.0];  //621355968000000L are ticks 
这将从0001年1月1日开始计算
这将给出日期为
2014-10-18 12:43:20+0000

,如何将其转换为
NSDate
?不,不正确。不行。把长的转换成双的没有意义,你不会得到任何东西。事实上,double甚至可能无法保存long-long中的所有数字。double也可以保存这样的大数字。除法后,它给出的是
635492.3299999996
,这要正确得多,因为我们必须在几秒钟内完成,而nsdate给出的是正确的值
2001-01-08 08:31:32+0000
不正确。滴答声从0001年1月1日开始计数。参考日期是2001年1月1日。您的数据源不能更改吗?我无法想象一个默认的数据类型能够容纳这么多的数据。你确定你的API从0001年1月1日开始返回刻度,而不是其他参考日期吗?@Aaron经过多次更正后,看到我编辑的答案,它的计算是正确的