java怎样将时间转换为整数,关于Java:如何将NSDate转换为整数以将PHP date()作为Unix时间戳传递?...

我是Objective-c的初学者,我被分配为我们的客户创建iPhone应用程序。我有Java的背景知识,但是几乎没有这个Objective-C的经验,这是我第一次开发完整的应用程序...

无论如何,我目前遇到很多问题。这些问题之一是我需要从我的iOS应用程序为PHP的date函数发送一个整数值。我一直在寻找解决方案,但是所有这些方法都以相反的方式(NSDate的int)而不是NSDate的整数值。

我尝试了像这里回答的解决方案

但很明显,它返回双精度值,而不是整数...

或这个

但这无法获得System time。

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

NSDate *theDay = [NSDate dateWithTimeIntervalSinceNow:[[NSTimeZone systemTimeZone] secondsFromGMT]];

但是我不知道如何将其转换为整数(或长整数)值。

我只需要获得与使用System.currentTimeMillis()进入Java相同的值即可。

此外,这是我第一次在stackoverflow中提出问题。因此,在此处发布问题时,请让我知道我是否应该做/不应该做的事情。

谢谢。

要获取当前日期,您应该使用以下命令:

NSDate *theDate = [NSDate date];

要从1970年1月1日起以秒为单位获得它,请使用:

NSTimeInterval seconds = [[NSDate date] timeIntervalSince1970];

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

long long milliseconds = [[NSDate date] timeIntervalSince1970] * 1000;

正如@HotLicks指出的那样,当System.currentTimeMillis()在格林尼治标准时间(GMT)中时,如果需要当地时间,则可以使用:

long long milliseconds = ([[NSDate date] timeIntervalSince1970]

+ [[NSTimeZone defaultTimeZone] secondsFromGMT]) * 1000;

(我认为大多数Web服务都需要GMT。)

应该注意的是,默认情况下/设计上,NSDate是相对于UTC / GMT的,并且不包含任何时区信息。如果需要"本地"时间,则必须添加时区偏移量(适当地缩放为秒或毫秒)。

@HotLicks:还应注意,System.currentTimeMillis()(在Java中)以UTC返回时间。 ;-)

@lnafziger谢谢您的快速清晰的解释和解决方案!我实际上曾经尝试过,但是它没有从我们的PHP服务器返回正确的结果。但是,我现在使用Java运行一些快速测试,并且可以确认您的代码返回的结果与Java的currentTimeMillis相同。正如Hot Licks指出的那样,可能我需要自己添加时区偏移量(因此,对我而言,实际上没有"简单方法"以简单的单行方法"自动"获得包含时区的值)。谢谢你们俩花时间阅读我的问题,并提供很大的帮助!

@lnafziger-是的,我不记得currentTimeMillis是否为UTC(尽管我应该知道,因为我实施了一次),但我也想起提醒Faust时区问题不会太麻烦。

@FaustV-实际上,您可能只需一行就可以完成所有操作-类似于[[NSDate date] timeIntervalSince1970] + [[NSTimeZone defaultTimezone] offsetInSecondsFromGMT]-尽管我在那里可能有些错误。

是的,您击败了我……当我回到计算机时,我打算将其发布。 :)我会把它添加到我的答案中,以便将来对人们很清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值