我正在尝试找到处理从我知道的日期和我知道的时间创建ISO 8601日期时间的最佳方法。我在创建这些日期时间以及将它们存储在数据库中时处理UTC时间。我有一个日期(2011-06-24),我想添加时间,在表格上我有文本输入的开始和结束时间。提交此表单后,我想知道我知道的日期(2011-06-24)和我知道的时间(上午10:00和上午11:30),并创建一个将在开始时存储的日期时间和结束时间。
我很擅长使用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...
有更好的方法吗?
答案 0 :(得分:3)
这个怎么样(见DateTime documentation):
<?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 :(得分:1)
$date = DateTime::createFromFormat('Y-m-d', '2011-06-24');
根据您的需要调整参数,具体取决于您传递的参数。