如何将NSDate转换为整数以将PHP date()作为unix时间戳传递?

Fau*_*t V 7 java integer objective-c nsdate

我是一名Objective-c初学者,我被指派为我们的客户创建一个iPhone应用程序.我有一些Java背景,但几乎没有这个目标的经验 - 这是我第一次开发一个完整的应用程序...

无论如何,我目前正在堆叠几个问题.其中一个问题是我需要date从我的iOS应用程序发送PHP 函数的整数值.我一直在寻找解决方案,但所有这些都处理相反的方式(int to NSDate),而不是NSDate整数值.

我尝试过像这里回答的解决方案, 但很明显它会返回double,而不是整数...
或者这个 但是这个得不到了System time.

我知道我可以通过以下方式获得当前系统的NSDate:

NSDate *theDay = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]];  
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将其转换为整数(或长)值.

我只需要得到相同的值,我们可以得到在JavaSystem.currentTimeMillis().

另外,这是我第一次在stackoverflow中提问.所以,请告诉我在这里发布问题时是否应该做/不应该做什么等.

谢谢.

lna*_*ger 7

要获取当前日期,您应该使用:

NSDate *theDate = [NSDate date];
Run Code Online (Sandbox Code Playgroud)

要在1970年1月1日以后的几秒钟内获得它作为双倍,你将使用:

NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970];
Run Code Online (Sandbox Code Playgroud)

要以ms为单位,只需将前一个值乘以1000,然后让编译器将其转换为整数,而无需任何其他代码:

long long milliseconds = [[NSDate date] timeIntervalSince1970] * 1000;
Run Code Online (Sandbox Code Playgroud)

正如@HotLicks指出的那样,System.currentTimeMillis()在GMT时,如果你需要当地时间,你可以使用:

long long milliseconds = ([[NSDate date] timeIntervalSince1970] 
                        + [[NSTimeZone defaultTimeZone] secondsFromGMT]) * 1000; 
Run Code Online (Sandbox Code Playgroud)

(我认为大多数网络服务都需要GMT.)

  • @HotLicks:还应该注意`System.currentTimeMillis()`(在java中)返回UTC的时间.;-) (2认同)