php - 从MySQL时间戳列以d-m-Y格式输出日期

时间:2015-07-18 10:15:54

标签: php mysql

我有一个数据库表,可以在有人注册我的服务时处理时间戳。时间戳工作正常并在数据库中插入整个时间,但我只需要日期,月份和年份格式。请看一下我的代码:

    if((!isset($_SESSION['USER'])) || (!isset($_SESSION['UID'])) || (!isset($_SESSION['UTYPE'])) || (($_SESSION['UTYPE']!='D') && ($_SESSION['UTYPE']!='F') && ($_SESSION['UTYPE']!='T')))
{
    header( 'Location: login.html' );
}
else
{
    include 'connection.php';
    include 'constants.php';

    $file_name = "Avanti-Website-Leads-".date('dmy-His');

    echo "<html><head>";
    ?>
    <script src="javascript/jquery-1.9.1.js"></script>
    <script type="text/javascript">
    function export2excel(file_name)
    {
        var link = document.createElement('a');
        link.download = file_name+".xls";
        link.href = 'data:application/vnd.ms-excel,' + encodeURIComponent($('body').html());
        link.click();
    }
    </script>

    <?php

    echo "</head><body onload=\"export2excel('".$file_name."')\" >";

    $dbh = new PDO("mysql:host=".$dbhost.";dbname=".$dbname, $dbuser, $dbpass);
    unset($dbhost, $dbuser, $dbpass, $dbname);

    if(($_SESSION['UTYPE']=='D')||($_SESSION['UTYPE']=='F'))
    {
        $query = "SELECT * FROM `bookavanti` where uid = ".$_SESSION['UID']." order by `bookavanti`.`lastupdate` DESC";
    }
    else
    {
        $query = "SELECT * FROM bookavanti order by lastupdate";
    }

    $sql = $dbh->prepare($query);
    $sql->execute();
    $affected_rows = $sql->rowCount();
    if($affected_rows>0)
    {
        echo "<table style='font-size:12px;text-align:center;'>";
        echo "<tr><th>Booking Time</th><th>Booking Type</th><th>Client Name</th><th>Email Address</th><th>Contact No.</th><th>Address</th><th>Pin Code</th><th>City</th><th>State</th></tr>";
        for ($i=0; $i < $affected_rows; $i++)
        {
            $row = $sql->fetch(PDO::FETCH_ASSOC);
            $x = explode('-',$row['lastupdate'],0);
            echo "<tr><td>".date("m.d.y",$x)."</td><td>".$row['type']."</td><td>".$row['name']."</td><td>".$row['email']."</td><td>".$row['contact']."</td><td>".$row['address']."</td><td>".$row['pin']."</td><td>".$row['city']."</td><td>".$row['state']."</td></tr>";
        }
        echo "</table>";
    }
    echo "</body></html>";

我相信行

$x = explode('-',$row['lastupdate'],0);
        echo "<tr><td>".date("m.d.y",$x)."</td>

有问题。如何将时间戳输入输出为d m Y格式。

3 个答案:

答案 0 :(得分:3)

使用php date()和strtotime()

$newDate = date("d-m-Y", strtotime($row['lastupdate']));  // new date contains d-m-y format of lastupdate

答案 1 :(得分:2)

您知道date需要一个整数(作为来自纪元的Unix时间戳)的第二个参数,这是可选的,默认情况下是当前的时间戳。

  

<强>时间戳

     

可选的timestamp参数是整数Unix时间戳,如果未给出时间戳,则默认为当前本地时间。换句话说,它默认为time()的值。

其次,$x = explode('-',$row['lastupdate'],0)$x = array($row['lastupdate'])基本相同,如果您将$x传递给{{date(),这并不是很有意义。 1}}。

可能打算做的事情更像是......

list($year, $month, $day) = explode('-', $row['lastupdate']);
$date = "$month.$day.$year";

只需用连字符分割存储在MySQL中的格式化日期字符串,然后按所需顺序重新组装部分。如果格式化的日期字符串包含除日期以外的任何其他内容,您可以放弃该位,只需先按空格分割字符串,然后再用连字符拆分,就像这样......

// Say your $row['lastupdate'] string is '2015-07-18 13:29:00', for example
list($tmpDate) = explode(' ', $row['lastupdate'], 2);
list($year, $month, $day) = explode('-', $tmpDate);
$date = "$month.$day.$year";

现在您获得了所需的07.18.2015

现在,您当然可以先将格式化的日期字符串转换为带有strtotime()的Unix时间戳,然后尝试使用date()将Unix时间戳转换回格式化的字符串(可能也是你想要做的事情),但是你必须要注意像时区这样的东西,如果你不仔细并且完全理解{{3的含义,那么这可能会或可能不会成为问题。例如,strtotime和<{em>假设您还在其他地方使用MySQL )。

答案 2 :(得分:0)

你可以像这样使用date_format mysql函数

select date_format(now(), '%m-%d-%Y');