Создайте дату и время ISO 8601 из даты и времени. - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь найти лучший способ справиться с созданием даты-времени ISO 8601 из даты, которую я знаю, и времени, которое я знаю.Я имею дело с временем UTC при создании этих дат и при их сохранении в базе данных.У меня есть дата (2011-06-24), к которой я хочу добавить время, в форме у меня есть текстовые вводы для времени начала и окончания.После отправки этой формы я хочу взять дату, которую я знаю (2011-06-24), и время, которое я знаю (10:00 AM и 11:30 AM), и создать дату и время, которые будут сохранены для начала.и время окончания.

Я довольно плохо знаком с работой с классом PHP DateTime, и вот что я придумал:

$day = "2011-06-24";
$start = "10:00 AM";
$end = "11:30 AM";

$date = new DateTime();
$date->setTimestamp(strtotime($start));
$date->setDate(date('Y', strtotime($day)), date('m', strtotime($day)), date('d', strtotime($day)));

// same for $end...

Есть ли лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Как насчет этого (см. Документация DateTime ):

    <?php

    $day = "2011-06-24";
    $start = "10:00 AM";
    $end = "11:00 AM";

    $startdate = DateTime::createFromFormat('Y-m-d g:i A', $day.' '.$start, new DateTimeZone('UTC'));
    $enddate = DateTime::createFromFormat('Y-m-d g:i A', $day.' '.$end, new DateTimeZone('UTC'));
    //date('c') generates ISO 8601 formatted date
    echo 'From ', $startdate->format('c'), ' to ', $enddate->format('c'), '.';

РЕДАКТИРОВАТЬ : добавлен часовой пояс.

1 голос
/ 23 июня 2011
$date = DateTime::createFromFormat('Y-m-d', '2011-06-24');

Настройте аргументы в соответствии с вашими потребностями, в зависимости от того, какие аргументы вы передаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...