从datetimepicker的html输入中获取时间值

时间:2013-12-29 04:58:09

标签: php html

我使用互联网上提供的datetime_picker为html文本输入创建一个值。现在的问题是如何将值分离为明确的日期和明显的时间值。使用date_picker,我可以得到如下的TEXT输入,

2013/12/29 12:52

可以在数据库中单独将此值插入日期和时间列。如果可以,编码应该如何,通常我会使用像

这样的代码获得html文本输入
$id = pg_escape_string($_POST['ID']);

但这将获得全部价值。我希望得到一个更详细的编码,因为我刚刚开始学习html和php,提前感谢所有的帮助。

5 个答案:

答案 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)

试试这个:https://eval.in/83925

$str= "2013/12/29 12:52";
$data = explode(" ",$str);
echo "Date: ". $data[0]."   ";
echo "Time: ". $data[1];