繁体   English   中英

php-从MySQL时间戳列以dmY格式输出日期

[英]php - Output date in d-m-Y format from MySQL timestamp column

我有一个数据库表,该表在有人注册我的服务时处理时间戳。 时间戳正常工作,并在数据库中插入整个时间,但是我只需要Date,Month和Year格式即可。 请看一下我的代码:

    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>

有问题。 我应该怎么做才能将时间戳输入输出为dm Y格式。

使用php date()和strtotime()

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

就是这样,您知道date期望其第二个参数为整数( 作为epoch的Unix时间戳 ),它是可选的,默认情况下为当前时间戳。

时间戳记

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

其次, $x = explode('-',$row['lastupdate'],0)与说$x = array($row['lastupdate'])基本上是一样的东西如果您要将$x交给date()这是有道理的。

可能打算做的事情与此类似。

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时间戳转换为格式化的字符串( 可能也是您尝试做的事情 ),但您必须注意时区之类的问题,例如,如果您不仔细全面地了解strtotime的作用以及MySQL如何处理时区,可能会或可能不会成为问题(例如, 假设您还使用MySQL其他地方 )。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM