Estoy escribiendo un script PHP para enviar datos a una base de datos de CloudKit a través de CK Web Services. Funciona bien con datos de cadena, pero tengo problemas para pasar una fecha de PHP a un campo de fecha/hora de CK.
CK devuelve fechas como TIMESTAMP de 13 dígitos. Entonces, el siguiente código
$timestamp = $record['created']['timestamp']; $timestamp = $timestamp/1000; echo '<td>'.date('mdY H:i:s', $timestamp)."</td>";hace eco
28-04-2017 12:35:19
Fino y elegante.
Así que asumo que si CK entrega una MARCA DE TIEMPO de 13 dígitos, debería aceptar lo mismo cuando se pasa a un campo de Fecha/Hora.
Por desgracia, pasando $dobTimestamp de lo siguiente
$dobTimestamp = strtotime($dob) * 1000; Resultados en este error BAD_REQUEST
Valor no válido, tipo esperado TIMESTAMP
Cuando voy al panel de CK e ingreso manualmente $dob , CK devuelve un valor exactamente igual a $dobTimestamp , por lo que creo que pasar $dobTimestamp debería funcionar. . . pero no es así.
No puedo encontrar lo que se supone que debo hacer en los documentos de Apple. ¿Alguien sabe cómo pasar una fecha a un campo de fecha/hora de CK a través de los servicios web? Es difícil imaginar que no habría una manera de hacerlo.
Después de muchos intentos, esto es lo que funciona con 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);El JSON para la consulta CK es simple:
. . .
"openingDate": {"value":'.$oDate.'}, "closingDate": {"value":'.$cDate.'},