如何从PHP脚本通过CK Web Services将日期传递给CloudKit?

时间:2017-04-29 13:07:50

标签: php date cloudkit cloudkit-web-services

我正在编写一个PHP脚本,通过CK Web Services将数据发送到CloudKit数据库。它适用于字符串数据,但我无法将日期从PHP传递到CK日期/时间字段。

CK将日期返回为13位TIMESTAMP。那么,以下代码

$timestamp = $record['created']['timestamp'];
$timestamp = $timestamp/1000;
echo '<td>'.date('m-d-Y H:i:s', $timestamp)."</td>";

回声

  

04-28-2017 12:35:19

很好,很花哨。

所以我假设如果CK传递一个13位的TIMESTAMP,它应该在传递给日期/时间字段时接受相同的。

唉,从以下

传递$dobTimestamp
$dobTimestamp = strtotime($dob) * 1000;

导致此BAD_REQUEST错误

  

无效值,预期类型TIMESTAMP

当我转到CK仪表板并手动输入$dob时,CK返回的值完全等于$dobTimestamp,所以我认为传递$dobTimestamp应该有效。 。 。但事实并非如此。

我无法找到Apple应该在Apple的文档中做什么。有谁知道如何通过Web服务将日期传递给CK日期/时间字段?很难想象没有办法做到这一点。

1 个答案:

答案 0 :(得分:0)

经过大量的小提琴之后,使用PHP DateTime可以解决这个问题:

$openingDate = $_POST['openingDate']; // is mm/dd/yyyy
$closingDate = $_POST['closingDate'];

。 。

// Process Dates
$openingDateTime = new DateTime($openingDate, new DateTimeZone('America/New_York'));  // Create new DateTime object
$closingDateTime = new DateTime($closingDate, new DateTimeZone('America/New_York'));

date_time_set($openingDateTime, 10, 00); // Set time for date object
date_time_set($closingDateTime, 17, 00); // Set time for date object

$oDate = (date_timestamp_get($openingDateTime)*1000);  // Get the TIMESTAMP from DateTiem object and convert to milliseconds
$cDate  = (date_timestamp_get($closingDateTime)*1000);

CK Query的JSON很简单:

。 。

"openingDate": {"value":'.$oDate.'}, 
"closingDate": {"value":'.$cDate.'},