PHP,将数据转换为Unix时间戳格式

时间:2011-08-05 22:14:36

标签: php mysql

我的表格看起来像这样:

  <td>Starts</td>
  <td><label for="mm"></label>
    <select name="mm" id="mm">
      <option value="">---</option>
      <option value="01">Jan</option>
      <option value="02">Feb</option>
    </select>
    <label for="dd"></label>
    <select name="dd" id="dd">
   <option value="">--</option>
       <option value="1">01</option>
       <option value="2">02</option>
    </select>
    <label for="yy">
      <input type="text" name="year" id="year" />
    </label></td>

供人们选择month | day | year。但是数据库中的字段是Unix时间戳格式。

任何想法如何获取这些数据并转换为我的数据库的Unix时间戳格式?

6 个答案:

答案 0 :(得分:3)

另一种选择,在mysql中:

INSERT ... UNIX_TIMESTAMP('$year-$month-$day') ...

一旦适当的数据清理和SQL注入预防得到了解决。

答案 1 :(得分:2)

这对你很有帮助,非常容易理解。

php strotime();

答案 2 :(得分:1)

<?php
if ($_POST) {
    // convert POST to MySQL date format
    $date_string = sprintf('%04d-%02d-%02d', $_POST['year'], $_POST['mm'], $_POST['dd']);
    // if you need it in a UNIX timestamp, do the following
    $unix_timestamp = strtotime($date_string);
}

答案 3 :(得分:0)

<?php

$time = new mktime($hour, $minute, $second, $month, $day, $year);

或.. ..

<?php

$time = new DateTime();
$time->setDate($year, $month, $day);
// set both to 0, otherwise you will get the current time at the given day/month
$time->setTime($hour, $minute); 

有很多方法可以在php中执行此操作,花一些时间查看日期/时间函数

答案 4 :(得分:0)

如果表单字段是捕获变量$ mm,$ dd,$ yy,那么

$timestemp = strtotime($yy . '-' . $mm . '-' . $dd);
正如Grigor正确指出的那样,

确实会给你一个整数$时间戳(以纪元秒为单位)。但总的来说,这可能只是成功的一半。在您的情况下,Unix时间戳格式使事情变得简单。但是根据您的数据库(以及您的关联驱动程序和数据库抽象层),在某些情况下,您可能需要将其转换为某种形式的日期字符串。例如,Oracle采用YYYY-MM-DD HH:MM:SS形式的日期字符串,该字符串将由

生成
$oracle_date_string = gmdate("Y-m-d H:i:s", $timestamp);

答案 5 :(得分:0)

将表单发布回php后,您将最终获得表单数据 特殊的全球$ _POST。如果您的用户完全选择了日期,则会显示代码段 将$ unix_ts设置为日期的unix时间戳。

<?php

  $unix_ts = null;

  // validate date
  if (is_numeric($_POST['dd']) || is_numeric($_POST['mm']) || is_numeric($_POST['year'])) {
    if (($tmp = strtotime($_POST['mm']."/".$_POST['dd']."/".$_POST['year'])) !== false) {  
       $unix_ts = $tmp;
    }
  } else {
    // display error message however you choose
    echo "Date not set<br>";
  }

  if ($unix_ts != null) { 
     // do query
  }

?>