PHP 排序时间始终给出当前数据,而不格式化给定日期


php sort time always give current data without formating given date

我有日期 14.10.13 格式,它来自我的数据库表。我想格式化它,但它总是给出今天的日期。我想将其更改如下。

 04 December 2014

为此,我使用流动代码

 <?php  echo date("d F Y", strtotime('14.10.13'));?>

但它总是给出当前日期
04 December 2014格式

我不明白什么是问题。

如果你有一个已知的格式,那么你可以通过使用::createFromFormat来避免strtotime-magic

$input  = '14.10.13';
$output = DateTime::createFromFormat('y.m.d', $input)->format('d F Y');
var_dump($output);

这很简单

  1. 首先,您必须将日期存储在mysql中的"date"数据类型中。

  2. 它存储在年-月-日。

  3. 使用DATE_FORMAT( column_name ,'%d.%m.%Y') MySQL 查询来获取已插入的日期。

仅此而已。不要使它复杂化。

strtotime()官方PHP文档的摘录:

注意:

m/d/y 或 d-m-y 格式的日期通过查看 各个组件之间的分隔符:如果分隔符是 斜杠 (/),则假设为美国 m/d/y;而如果 分隔符是破折号 (-) 或点 (.),然后是欧洲 d-m-y 格式 是假设的。

为避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD) 日期或日期时间::createFromFormat() 如果可能。

我会去DateTime::createFromFormat().

date()传递标准格式

<?php  echo date("d F Y", strtotime('14-10-13'));?>

使用.不是日期标准,因此请使用-分隔日期

或通过更换

<?php  echo date("d F Y", strtotime(str_replace('.', '-','14.10.13')));?>