如何在iOS应用程序和PhP API之间发送和转换回UTC时间戳?

如何在iOS应用程序和PhP API之间发送和转换回UTC时间戳?,php,ios,date,Php,Ios,Date,我和我的PhP开发人员面临转换日期和时间的问题 我在做什么: 在我的应用程序中,我每天都在执行活动,这些活动将保存到服务器中。为了知道特定活动的日期和时间,我传递UTC时间戳(基于日期) PhP开发人员正在做什么: 他正在根据UTC时间戳(我将其传递到API中)创建一个日期(采用yyy-MM-dd格式)。并将实际时间戳存储在另一列中 问题是,在我的应用程序中,当我试图根据特定日期获取活动时,他根据存储的日期对活动进行分组。并将返回我的结果集 但我面临的问题是 我传递给服务器的内容不会返回 例如

我和我的PhP开发人员面临转换日期和时间的问题

我在做什么:

在我的应用程序中,我每天都在执行活动,这些活动将保存到服务器中。为了知道特定活动的日期和时间,我传递UTC时间戳(基于日期)

PhP开发人员正在做什么:

他正在根据UTC时间戳(我将其传递到API中)创建一个日期(采用
yyy-MM-dd
格式)。并将实际时间戳存储在另一列中

问题是,在我的应用程序中,当我试图根据特定日期获取活动时,他根据存储的日期对活动进行分组。并将返回我的结果集

但我面临的问题是

我传递给服务器的内容不会返回

例如

goodTimestamp=1442342364(我通过的)

badTimestamp=1442275200(根据存储在服务器数据库中的日期进行转换的内容)

若你们链接到站点并选中convert timestamp to a date,那个么你们就会知道两者都显示了这个日期

有效日期=2015年9月15日星期二18:39:24 GMT

错误日期=2015年9月15日星期二00:00:00 GMT

因此,我得到了一个错误的结果。我于2015年9月16日上午12:09执行了一项活动。但是我没有得到正确的结果

我们应该如何通过继续相同的流程(从应用程序)来实现相同的日期和时间


我创建了一个测试代码来检查日期是否正确

NSString *badTimestamp = @"1442275200";
NSString *goodTimestamp = @"1442342364";
NSDate *goodDate = [NSDate dateWithTimeIntervalSince1970:[goodTimestamp doubleValue]];
NSDate *badDate = [NSDate dateWithTimeIntervalSince1970:[badTimestamp doubleValue]];

NSDateComponents *goodComponents = [[NSCalendar currentCalendar] components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear ) fromDate:goodDate];
NSDateComponents *badComponents = [[NSCalendar currentCalendar] components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear ) fromDate:badDate];
NSLog(@"good : %ld - %ld - %ld", goodComponents.day, goodComponents.month, goodComponents.year);
NSLog(@"bad : %ld - %ld - %ld", badComponents.day, badComponents.month, badComponents.year);

> 2015-09-09 19:36:30.918 MyApp[23827:292047] good : 16 - 9 - 2015
> 2015-09-09 19:36:31.380 MyApp[23827:292047] bad : 15 - 9 - 2015
下面是将时间戳转换为日期的PhP代码

date('Y-m-d', 'timestamp');

您的php代码不包含日期中的时间。正确的方法是

date('Y-m-d H:i:s', 'timestamp');

我们(me和pHp开发人员)集成在一起的最佳解决方案是存储一个带有日期和时间的时间戳。返回时,根据可用的时间戳设置结果。现在我这边一切都很好。感谢关心我的问题的人。

请也添加php代码。可能会像
$good=time()一样愚蠢$bad=mktime(0,0,0)
。所以,是的。。。显示php代码。听起来好像服务器上存储的日期不包括时间,这就是为什么在将它们转换回时间戳时,总是在午夜…@MarcB,添加了php代码。@Robert,我添加了php代码,请检查并让我知道完成此操作的正确方法。谢谢回复。但是我的PhP开发人员只需要
Y-m-d
就可以轻松地比较日期。最后,他将向我发送一个包含数组中活动列表的对象。如果我不想要时间,还有其他方法吗?为什么去掉时间会影响日期比较?如果一个日期比另一个日期低,它仍然比另一个日期低。是的,但同一天有多个活动。你想做什么?你每天都有活动吗?那你的问题到底是什么?你得到的结果是什么。您也可以显示您的SQL查询吗?