PHP / MySQL:从YYYY-MM-DD转换为DD月,YYYY?

时间:2009-04-13 14:18:05

标签: php mysql datetime

我在MySQL表中有一个DATE列,它以这种格式表示日期:YYYY-MM-DD。

我想使用PHP从数据库中检索日期,但显示如下:DD Month,YYYY。

例如,从“2009-04-13”到“2009年4月13日”。

女巫是最好的方法吗? (我知道如何从数据库中获取日期。我只需要知道如何转换它)

我还需要用西班牙语显示月份名称。有一种方法可以在不使用strplc或类似的东西进行每月翻译的情况下进行吗?

我是编程新手,请详细说明。

感谢!!!

8 个答案:

答案 0 :(得分:7)

请参阅MySQL中的DATE_FORMAT()函数。我想这是你做这件事的最佳方式。

另外,你可以这样做:

  • 从数据库
  • 获取日期
  • 在PHP中使用strtotime,转换为unix时间
  • 然后使用date格式化时间。

通过使用date(),当您使用setlocale在PHP中设置语言环境时,您将能够获得西班牙语的月份名称。

答案 1 :(得分:1)

执行以下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 = ?");
...

答案 2 :(得分:1)

您还可以在MySql选择中使用UNIX_TIMESTAMP(date)跳过strtotime()部分。但请记住,这是一个特定于MySQL的功能,将来可能无法移植。

答案 3 :(得分:0)

最简单的方法是使用strtotime()函数来规范化UNIX时间戳的输入。

然后使用date()函数以您希望的任何格式输出日期。请注意,您需要将UNIX时间戳作为第二个参数传递给date()。

答案 4 :(得分:0)

尚未提及的另一个选项:

SQL:

SELECT UNIX_TIMESTAMP(date) FROM table

PHP:

print date('your format', $timestamp_from_the_db);

答案 5 :(得分:0)

就个人而言,我喜欢在MySQL中使用整数数据类型来存储UNIX时间戳格式的日期。我将该整数的所有处理都留给了PHP。保持表格和查询尽可能简单一直很好。主要是,在我写的代码中,日期对它们进行了某种计算。这一切都在PHP端完成,并始终采用UNIX时间戳格式。以UNIX时间戳格式以外的任何方式存储或检索日期只是意味着错误进入的另一个步骤,并使查询不那么模块化。如何格式化日期最好保留到显示日期之前的最后一分钟。这只是我的意见,但除非在极端情况下你无法在提取后处理数据库值,否则日期不应该格式化为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.

答案 6 :(得分:0)

这将帮助您根据需要进行转换:

$dob ='2009-04-13';
echo date('d M Y', strtotime($dob));

答案 7 :(得分:0)

$ origDate =“ 2018-04-20”;

$ newDate = date(“ d-m-Y”,strtotime($ origDate)); 回声$ newDate;