如何在php中单独转换日期和时间并插入到MYSQL表中

时间:2017-08-13 10:55:25

标签: php mysql

我有一个表单,其中用户在HTML中输入日期和时间的输入值。输入设置为 type =“text ”,因为我正在使用 jQUERY 插件,用于在输入字段上单击时选择日期。这是一个没有css申请的快速表格。

form.html

$(document).ready(function(){
$("#day").datepicker();
$("#time").timepicker();

});
<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
<script
  src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
  integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
  crossorigin="anonymous"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css">
<form>
<input type="text" name="day" id="day" autocomplete="off"required >
<input type="text" name="time" id="time" autocomplete="off"required >
<input type="submit" value="submit"> 
</form>

由于从这个表单传递的值是直接字符串这里是我在php上尝试过的

<?php
  if(isset($_POST['submit']));
  {
    $a = $_POST['day'];
    $b = $_POST['time'];
    $day = date('d-m-Y',strtotime($a));
    echo (gettype($day))//Here it returns string
  }
 ?>

现在这是我在互联网上找到的最常用的方法,我只是想知道它是字符串类型还是实际上是日期类型,其次是如何将字符串转换为时间?

这是MYSQL表看起来像

  

id |一天|时间

日期列的数据类型设置为日期 name =“day”输入字段中的值进入此

时间列的数据类型设置为时间 name =“time”输入字段中的值进入此

我知道MYSQL函数,例如 STR_TO_DATE ,但是我使用预处理语句来传递值,因此我无法直接将函数传递给它,我的查询看起来像这样:

  

INSERT INTO table1('','day','time')VALUES('',:dayname,:timestamp);

1 个答案:

答案 0 :(得分:1)

  

我只想知道它是字符串类型还是实际上是字符串类型   日期类型

当您将表单中的数据发送到PHP时,它会以字符串形式出现。

$_POST['day'] = '08/01/2017';
$_POST['time'] = '12:30 AM';
  

...其次如何将字符串转换为时间...

使用STR_TO_DATE会导致在PDO中绑定时值为NULL,因此您可以执行以下操作来格式化时间和日期:

$dt = DateTime::createFromFormat('d/m/yy', $date);
$formatted_date = $dt->format('Y-m-d'); //YYYY-mm-dd

$formatted_time = date("G:i:s", strtotime("04:25 PM")); //HH:ii:ss

以下是使用PDO语句的示例:

<?php
$date = $_POST['day'];
$time = $_POST['time'];

$dt = DateTime::createFromFormat('d/m/yy', $date);
$formatted_date = $dt->format('Y-m-d'); //YYYY-mm-dd

$formatted_time = date("G:i:s", strtotime($time)); //HH-ii

$PDO = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$stmt = $PDO->prepare("INSERT INTO table1 (' ', 'day' , 'time') VALUES (' ', :dayname , :timestamp);");
$stmt->bindParam(':dayname', $formatted_date);
$stmt->bindParam(':timestamp', $formatted_time);
$stmt->execute();