我得到了这个变量:
$payments['date'] = 21062013
问题:
它是一个日期,所以我想给这个字符串加上斜杠。
How I'm try:
echo $paymentdate = substr($payments['date'],2)+/+substr($payments['date'],4)+/substr($payments['date'],8);
坏了,有人能帮帮忙吗?
我的完整代码:
$i = 0;
foreach($SQL->query('SELECT id, form, email, value, data, date, compensated from payments where compensated="N"') as $payments)
{
$i++;
$paymentdate = substr($payments['date'], 0, 2)."/".substr($payments['date'], 2, 2)."/".substr($payments['date'], 2, 8);
echo '<tr bgcolor="' . (is_int($i / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . '">
<td>' . $payments['id'] . '</td>
<td>' . $payments['form'] . '</td>
<td>' . $payments['email'] . '</td>
<td>' . $payments['value'] . '</td>
<td>' . $paymentdate .'</td>
<td>' . $payments['data'] . '</td>
<td>' . $payments['compensated'] . '</td>
<td>a</td>
</tr>';
}
应该可以了;
echo $paymentdate = substr($payments['date'], 0, 2)."/".substr($payments['date'], 2, 2)."/".substr($payments['date'], 4, 4);
使用strtotime()
函数更改显示方式
<?php echo date("m/d/y", strtotime("20130621")); ?>
请:
- 阅读substr()的文档。
substr($payments['date'], 0, 2) . '/' . substr($payments['date'], 2, 2) . '/' . substr($payments['date'], 4, 4);
function convertDate($date, $format = 1)
{
$newDate = "";
//Convert a string to an array
$num = str_split($date);
switch(format)
{
case 1:
$newDate = $num[0].$num[1]."/".$num[2].$num[3]."/".$num[4].$num[5].$num[6]$num[7] ;
Break;
// ....
}
return $newDate;
}
假设您的日期字符串始终是固定宽度的格式mmddYYYY
,您可以在这里使用正则表达式替换:
$sDate = "21062013";
$output = preg_replace("/^('d{2})('d{2})('d{4})$/", "$1/$2/$3", $sDate);
echo $output; // 21/06/2013
对于另一种更健壮和通用的方法,我们可以进行从字符串到日期的往返转换,然后以所需的格式将日期转换回字符串:
$sDate = "21062013";
$ymd = DateTime::createFromFormat('dmY', $sDate)->format('d/m/Y');
echo $ymd; // 21/06/2013
因为您的数据来自MySQL数据库,所以在数据到达PHP之前对其进行格式化更有意义。我将展示如何将数字转换为Y-m-d
日期字符串,以及如何使用SQL创建d/m/Y
日期字符串:(Demo)
SELECT id,
STR_TO_DATE(`date`,'%d%m%Y') AS `Y-m-d_format`,
DATE_FORMAT(STR_TO_DATE(`date`,'%d%m%Y'), '%d/%m/%Y') AS `d/m/Y_format`
FROM payments
这里有一些可行的PHP技术为您的dmY
格式的字符串:(演示)
$payments['date'] = 21062013;
在第2和第4个位置注入斜杠:
echo preg_replace('/'d'd'K/', '/', $payments['date'], 2);
解析为三个单独的字符串,然后用斜杠内爆:
echo implode('/', sscanf($payments['date'], '%2s%2s%4s'));
创建一个Datetime对象,然后以新的格式输出:
相当于:echo DateTime::createFromFormat('dmY', $payments['date'])->format('d/m/Y');
echo date_create_from_format('dmY', $payments['date'])->format('d/m/Y');
因为你的日期字符串在dmY
中,PHP的strtotime()
不能正确解析它:
// DO NOT USE echo date('d/m/Y', strtotime($payments['date']));