PHP/MySQL:从YYYY-MM-DD转换为DD月,YYYY?
我在MySQL表中有一个日期列,它以以下格式表示日期:YYYY-MM-DD 我想使用PHP从数据库中检索日期,但显示方式如下:DD Month,YYYY 例如,从“2009-04-13”到“2009年4月13日” 巫婆是最好的方法吗??(我知道如何从数据库中获取日期。我只需要知道如何转换它) 我还需要用西班牙语显示月份名称。有一种方法可以做到这一点,而不必每月使用strplc或类似的东西进行翻译 我是编程新手,请详细说明 谢谢 请参阅MySQL中的函数。我想这是你最好的方法 此外,您还可以:PHP/MySQL:从YYYY-MM-DD转换为DD月,YYYY?,php,mysql,datetime,Php,Mysql,Datetime,我在MySQL表中有一个日期列,它以以下格式表示日期:YYYY-MM-DD 我想使用PHP从数据库中检索日期,但显示方式如下:DD Month,YYYY 例如,从“2009-04-13”到“2009年4月13日” 巫婆是最好的方法吗??(我知道如何从数据库中获取日期。我只需要知道如何转换它) 我还需要用西班牙语显示月份名称。有一种方法可以做到这一点,而不必每月使用strplc或类似的东西进行翻译 我是编程新手,请详细说明 谢谢 请参阅MySQL中的函数。我想这是你最好的方法 此外,您还可以:
- 从数据库获取您的日期
- 在PHP中使用,以转换为unix时间
- 然后使用格式设置时间
通过使用date()在PHP中设置区域设置时,您将能够获得西班牙语的月份名称。最简单的方法是使用函数将输入规范化为UNIX时间戳
然后使用该函数以任意格式输出日期。请注意,您需要将UNIX时间戳作为第二个参数传递到date()。执行以下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: PHP:
就我个人而言,我喜欢在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.
报告应于年月日提交。那是从现在开始的。
您也可以通过在MySql选择中使用UNIX\u时间戳(日期)跳过strotime()部分。但请记住,这是一个特定于MySQL的函数,将来可能无法移植。这将帮助您根据需要进行转换:
$dob ='2009-04-13';
echo date('d M Y', strtotime($dob));
$origDate=“2018-04-20”
$newDate=日期(“d-m-Y”,strotime($origDate));
echo$newDate 谢谢。如何在下一个mysqli查询中插入SET lc\u time\u名称???$sql='从personID=?'中选择personID、姓名、日期\格式(persons.birthdate,“%d de%M,%Y”)、出生地、国家ID;请在您的代码中添加一些解释,并添加使您的解决方案优于此处已发布的其他解决方案的原因
<?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.
$dob ='2009-04-13';
echo date('d M Y', strtotime($dob));