我使用互联网上提供的datetime_picker为html文本输入创建一个值。现在的问题是如何将值分离为明确的日期和明显的时间值。使用date_picker,我可以得到如下的TEXT输入,
2013/12/29 12:52
可以在数据库中单独将此值插入日期和时间列。如果可以,编码应该如何,通常我会使用像
这样的代码获得html文本输入$id = pg_escape_string($_POST['ID']);
但这将获得全部价值。我希望得到一个更详细的编码,因为我刚刚开始学习html和php,提前感谢所有的帮助。
答案 0 :(得分:0)
您可以简单地explode
从DatePicker获取的文本。
$valuefromdatepicker='2013/12/29 12:52';
$datetimeval= explode(' ',$valuefromdatepicker);
$date = $datetimeval[0]; // holds 2013/12/29
$time = $datetimeval[1]; // holds 12:52
答案 1 :(得分:0)
$DateTime= '2013-01-22 10:45:45';
echo $time = date("H:i:s",strtotime($DateTime));
echo $date= date("Y:m:d",strtotime($DateTime));
答案 2 :(得分:0)
获取日期
echo date('Y-m-d',strtotime('2013/12/29 12:52'));
和时间。
echo date('H:i',strtotime('2013/12/29 12:52'));
查看Dateformats和日期manual
答案 3 :(得分:0)
根据您的示例,我不确定问题是否:
您的数据库中有一个日期列,但是当您尝试使用组合日期和时间插入值时,只有日期存储在数据库中但时间会丢失
您有一个日期列和一个时间列,并且您正在尝试拆分输入字符串以隔离要保存到时间列的时间值。
在任何一种情况下,我怀疑问题实际上与字符串解析或拆分无关,而是与数据库设置有关。让我们回顾一下上面的两种情况:
2013/12/29 12:52
,只存储日期,但时间会被删除。您希望将日期和时间都存储在该列中。如果将列设置为“日期”的数据类型,则可能会发生这种情况,该日期仅用于存储日期值,而不是时间值。 PostgreSQL,如MySQL和类似的数据库服务器,允许您传递日期列的完整日期时间值,它会自动忽略值的无关时间部分。如果要将完整日期和时间存储在该列中,则需要将列的数据类型从“日期”更改为“时间戳”。查看Postgre文档,可以使用类似于{/ p>的ALTER
语句来完成此操作
ALTER TABLE foo
ALTER COLUMN foo_timestamp SET DATA TYPE timestamp;
就像“date”类型的列允许传入完整的datetime值并静默地删除输入的时间部分一样,“time”类型的列也将允许传递完整的datetime值并将默默地删除输入的日期部分,仅存储时间。这意味着无需解析字符串并在插入之前拆分值。
但是,使用上述任一解决方案,数据库都需要能够正确解释完整的日期时间字符串,以解释日期和时间,并相应地存储值。虽然可能没有必要,但最好使用标准格式设置日期时间字符串的格式,以避免潜在的问题。我建议使用php的DateTime类来实现这一点,如下所示:
// assuming that the format from picker is always : 2013/05/01 01:05
$date = DateTime::createFromFormat('Y/m/d H:i', $_POST['datetime']);
$iso_date = $date->format(ISO8601); // returns '2013-05-01T01:05:00'
使用ISO-8601格式化的日期时间,如果它们是单独的列,则可以将其传入日期列和时间列,如果要将它们存储在一起,则可以传入单个时间戳列。
你也可以使用DateTime类将日期和时间字符串作为单独的变量,如下所示:
// assuming that the format from picker is always : 2013/05/01 01:05
$date = DateTime::createFromFormat('Y/m/d H:i', $_POST['datetime']);
$date_string = $date->format('Y-m-d'); // returns '2013-05-01';
$time_string = $date->format('H:i'); // returns '01:05';
答案 4 :(得分:0)
$str= "2013/12/29 12:52";
$data = explode(" ",$str);
echo "Date: ". $data[0]." ";
echo "Time: ". $data[1];