我有一个MySQL表DATE列表示在这种格式的日期:YYYY-MM-DD。
我想用PHP来从数据库中检索的日期,但它显示是这样的:DD月,YYYY。
从“2009-04-13”到2009' 年4月比如'13。
女巫是做到这一点的最好办法? (我知道如何从DB获得的日期。我只需要知道如何将它转换)
我还需要显示在西班牙月份名称。有一个办法做到这一点,而无需使用strplc或类似的东西每个月翻译?
我是新来编程,请详细说明。
谢谢!!!
请参阅在MySQL中DATE_FORMAT()功能。我想这是为你做到这一点的最好办法。
另外,还可以使这个:
通过使用日期()你就可以得到个名字在西班牙语当你与setlocale设置您的区域设置PHP。
您也可以跳过通过使用你的MySQL UNIX_TIMESTAMP(日期)选择的strtotime()的一部分。但请记住,这是一个MySQL特定的功能,并可能无法在未来便携。
执行下面的MySQL查询:
SET lc_time_names = 'es_ES';
SELECT DATE_FORMAT(t.date,'%e de %M, %Y') FROM your_table t ...
随着库MySQLi这将是:
$mysqli->query("SET lc_time_names = 'es_ES'");
$stmt = $mysqli->prepare("SELECT DATE_FORMAT(t.date,'%e de %M, %Y') FROM your_table t ...where id = ?");
...
另一种选择没有提到:
SQL:
SELECT UNIX_TIMESTAMP(date) FROM table
PHP:
print date('your format', $timestamp_from_the_db);
就个人而言,我喜欢在MySQL使用整数数据类型的数据存储部在UNIX时间戳格式。我离开这个整数的所有的处理,以PHP。保持表和查询尽可能简单,一直使我受益匪浅。主要是,在我写的代码,日期有某种做他们的计算。这是在PHP端,并始终在UNIX时间戳格式全部完成。存储或检索在比UNIX时间戳格式以外的任何其他日期,只是表示错误悄悄在另一个步骤,使查询更少的模块化。它是如何显示之前被格式化的日期最好是留给直到最后一分钟。这只是我的意见,但除非有极端的情况下,你不能提取后处理DB值,日期不应该被格式化SQL端。
一个简单的例子:
<?php
$date = now();
$dueDate = $date + 60*60*24*7; // One week from now
$sqlInsert = "INSERT INTO reports SET `dueDate` = $date";
$resInsert = mysql_query( $sqlInsert );
$sqlSelect = "SELECT `dueDate` FROM reports";
$resSelect = mysql_query( $sqlSelect );
$rowSelect = mysql_fetch_array( $resSelect );
$DB_dueDate = $rowSelect['dueDate'];
$daysUntilDue = ( $DB_dueDate - now() ) / 60*60*24;
$formattedDueDate = date( "j F, Y", $DB_dueDate );
?>
The report is due on <?=$formattedDueDate?>. That is <?=$daysUntilDue?> from now.
最简单的方法是使用strtotime()功能正常化输入到UNIX时间戳。
然后使用date()函数输出你希望的任何格式的日期。请注意,您需要通过UNIX时间戳的第二个参数日期()。
这将帮助你,只要你想转换:
$dob ='2009-04-13';
echo date('d M Y', strtotime($dob));
$ origDate = “2018年4月20日”;
$ newDate =日期( “d-M-Y”,的strtotime($ origDate));回声$ newDate;