我有一个数据库表,可以在有人注册我的服务时处理时间戳。时间戳工作正常并在数据库中插入整个时间,但我只需要日期,月份和年份格式。请看一下我的代码:
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格式。
答案 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');