pg.*_*pg. 1 php mysql datetime cakephp
我在MySQL中有一个datetime列让我们调用它$time.它将以CakePHP形式出现.如果我试图回应它,我得到的只是"阵列".如果我print_r()在上面,我得到:
Array ( [month] => 10 [day] => 30 [year] => 2010 [hour] => 16 [min] => 30 )
Run Code Online (Sandbox Code Playgroud)
我希望将此作为格式化日期回应,似乎没有任何效果,因为它不是字符串而是数组.我必须这样:
echo $time['month'].'-'.$time['day'].'-'.$time['year'].' '.$time['hour'].':'.$time['min'];
Run Code Online (Sandbox Code Playgroud)
或者我可以使用该date功能吗?
一种简单,程序化的方法是date()与之结合使用mktime(),就像这样.date()基于UNIX时间戳的格式; mktime()根据您的数组值提供时间戳:
$timestamp = mktime($time['hour'], $time['min'], 0, $time['month'], $time['day'], $time['year']);
echo date('M-d-Y H:i', $timestamp);
Run Code Online (Sandbox Code Playgroud)
有关DateTime课程的更加面向对象的方法,请参阅Gordon的答案.
你可以做:
$dt = new DateTime;
$dt->setDate($time['year'], $time['month'], $time['day']);
$dt->setTime($time['hour'], $time['minute']);
echo $dt->format(DateTime::ISO8601);
Run Code Online (Sandbox Code Playgroud)
您可以将任何格式放入format()其中date().
你不需要PHP5.3.
如果需要创建数组中尚未包含的日期,请使用上述内容.如果你只是想要'Ymd H:i'格式,你可以使用
printf("%d-%02d-%02d %02d:%02d",
$time['year'], $time['month'], $time['day'],
$time['hour'], $time['min']);
Run Code Online (Sandbox Code Playgroud)
或者使用参数交换并传递整个数组(尽管你必须依赖于顺序):
vprintf('%3$d-%1$02d-%2$02d %4$02d:%5$02d', $time);
Run Code Online (Sandbox Code Playgroud)
不用说,您也可以使用vsprintf或sprintf创建一个可以用DateTime或解析的日期时间字符串strtotime,例如
$dt = new DateTime(vsprintf('%3$d-%1$02d-%2$02d %4$02d:%5$02d', $time));
Run Code Online (Sandbox Code Playgroud)
然后你可以格式化,如第一个例子中所示.
| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |