当前位置:  开发笔记 > 编程语言 > 正文

使用PHP从MySQL datetime转换为另一种格式

如何解决《使用PHP从MySQLdatetime转换为另一种格式》经验,为你挑选了12个好方法。

datetime在MySQL中有一个专栏.

如何使用PHP 将其转换为显示为mm/dd/yy H:M(AM/PM)



1> kta..:

如果您正在寻找将日期规范化为MySQL格式的方法,请使用以下方法

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

该行$phpdate = strtotime( $mysqldate )接受一个字符串并执行一系列启发式操作,将该字符串转换为unix时间戳.

该行$mysqldate = date( 'Y-m-d H:i:s', $phpdate )使用该时间戳和PHP的date函数将该时间戳转换回MySQL的标准日期格式.

(编者注:这里的答案是因为一个原始问题,措辞混乱,以及即使它没有'直接回答现在存在的问题',这个答案提供的一般Google有用性


这个答案令人困惑
`不适用于谁?如果您想将***从***MySQL转换为**mm/dd/yy H:M(AM/PM)**,则接受的答案将有效.仅仅因为你想做相反的事情并不能使接受的答案出错.
@ 0xBAADF00D:请再次阅读问题......没有人问过MySQL标准格式.
问题要求以mm/dd/yy H:M(AM/PM)格式输出,而不是"Ymd H:i:s".
当然,但是,当标准存在时,遵循标准可能会很好(这可以避免以后在另一个开发代码时遇到麻烦)xD

2> Tim Boland..:

要将从MySQL检索的日期转换为requested(mm/dd/yy H:M (AM/PM))格式:

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

请参阅PHP日期格式选项以调整格式.


MySQL的标准格式是:`date("Ymd H:i:s",$ datetime)`
我可能错了,但我认为你们中有些人错过了这一点.他希望输出为"m/d/yg:i A"格式,从DATETIME字段中提取原始日期.所以他的代码有效.@Mike $ row-> createdate只是Tim的datetime专栏.
可能有工作,但它不是标准的mysql格式.
如果你误读了这个问题,@ AsTeR答案只会令人困惑.OP回答了自己的问题,并希望从***MySQL和输出到请求格式的日期***:**mm/dd/yy H:M(AM/PM)**.
投票结果因为答案令人困惑.

3> enobrev..:

如果您使用的是PHP 5,也可以尝试

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");


+1如果您的PHP 5> = 5.2.0,这是一种方法

4> Tony Stark..:
$valid_date = date( 'm/d/y g:i A', strtotime($date));

参考: http ://php.net/manual/en/function.date.php



5> Hasenprieste..:

最后是PHP 5.3及以上版本的正确解决方案:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date, new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Europe/Berlin')); // optional
echo $date->format('m/d/y h:i a');


创建日期对象时,请不要忘记指定时区!否则,您的格式化日期可能要过几个小时。您的“ datetime”列应为UTF8,因此请传递“ new DateTimeZone('UTC')”作为第三个参数,以确保PHP知道。

6> flash..:

一种更简单的方法是直接在MySQL查询中格式化日期,而不是PHP.请参阅DATE_FORMAT的MySQL手册条目.

如果你宁愿用PHP做,那么你需要date函数,但是你必须先将数据库值转换为时间戳.


-1因为DB中的格式化日期并不好.多语言Web需要不同的日期格式,然后您必须使用PHP格式化日期(共同的业务逻辑语言).当你写了关于`date`函数的文章时,你应该写一下'strottime`函数来帮助别人而不是"但你必须先将你的数据库值转换为时间戳".

7> 小智..:

忘记所有.只需使用:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))


-1,这与OP请求的格式不匹配.

8> Greg..:

要正确格式化DateTimePHP中的对象以便在MySQL中存储,请使用MySQL使用的标准化格式,即ISO 8601.

从版本5.1.1开始,PHP已将此格式存储为常量,我强烈建议您使用它,而不是每次都手动键入字符串.

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

这个以及其他PHP DateTime常量的列表可以在http://php.net/manual/en/class.datetime.php#datetime.constants.types上找到.



9> 小智..:

这应格式化SQL查询中的字段:

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename



10> Gustavo Carr..:

使用日期功能:



date()函数是否期望整数时间戳而不是问题中指定的日期时间?

11> tfont..:

取决于您的MySQL日期时间配置.通常:2011-12-31 07:55:13格式.这个非常简单的功能应该是神奇的:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

或者更进一步以匹配问题.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}



12> 小智..:
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

如果您不想更改PHP代码中的每个函数,要显示预期的日期格式,请在源代码中更改它 - 您的数据库.

使用上面的示例中的as运算符命名行很重要(作为dateFrom,作为dateUntil).您在那里写的名称是名称,行将在您的结果中调用.

这个例子的输出将是

[月份的日期,数字(0..31)].[月份名称(1月〜12月)].[年份,数字,4位数]

示例:5.2015年8月

使用选择的分隔符更改点,并检查DATE_FORMAT(日期,格式)函数以获取更多日期格式.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有