1

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

CK 以 13 位 TIMESTAMP 形式返回日期。所以,下面的代码

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

回响

2017 年 4 月 28 日 12:35:19

很好,花花公子。

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

唉,$dobTimestamp从以下经过

$dobTimestamp = strtotime($dob) * 1000;

导致此BAD_REQUEST错误

无效值,预期类型 TIMESTAMP

当我去 CK Dashboard 并手动输入$dob时,CK 返回一个完全等于的值,$dobTimestamp所以我认为传递$dobTimestamp应该可以工作。. . 但事实并非如此。

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

4

1 回答 1

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 查询的 JSON 很简单:

. . .

"openingDate": {"value":'.$oDate.'}, 
"closingDate": {"value":'.$cDate.'}, 
于 2017-06-04T15:36:03.003 回答