使用strtotime和date格式化日期字符串


Formating date string with strtotime and date

我有日期字符串(示例'2014-06-06 12:24:48')。I用其他格式显示什么(例如'06.06.2014 (12:24:48)')。

$date = '2014-06-06 12:24:48';
echo date('d-m-Y (H:i:s)', strtotime($date));

输出日期是否总是与输入日期相同?

date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))); 
// Always true?
date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))); 
// Always true?

虽然该语句在大多数情况下为真,但它将并不总是为真,因为左边的(date('Y-m-d H:i:s')是在右边的date('Y-m-d H:i:s')之后求值的,所以如果代码在第二个数字即将改变之前运行一纳秒,两个日期将具有不同的第二个数字。

您可以通过运行下面的代码来验证这两个语句并不总是相等的,它最终将输出"False"。

while(true) {
  $x = (date('Y-m-d H:i:s') === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))));
  if(!$x) {
    exit("False");
  }
}

但是,如果为每个date调用提供相同的时间戳,则语句将始终相等

$time = strtotime(date('Y-m-d H:i:s'));
date('Y-m-d H:i:s',$time) === date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s',$time))); 
//Always true

是,您可以更改日期格式,如

$date = '2014-06-06 12:24:48';
echo date('d-m-Y (H:i:s)', strtotime($date));

更多格式:- http://www.php.net//manual/en/function.date.php

输出将不会和你输入的日期相同,这取决于你输入的日期格式如果你的日期格式是-

$date = date('Y-m-d H:i:s');

,输入日期格式为

$input_date = date('Y/m/d H:i:s');

则需要转换输入日期格式以匹配其他日期,如

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

否则你的输入日期格式是相同的,那么不需要转换

then match if($date == $input_date)

是。这两个日期将始终是相同的日期和时间-以不同的格式:

2014-06-06 12:24:48
06-06-2014 (12:24:48)
<<p> 看到演示/strong>

编辑

声明:

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

总是通常为真(参见编辑2)。

date()的第二个参数默认为当前时间戳。

strtotime(date('Y-m-d H:i:s'))为当前时间戳。

所以这两个语句:

date('Y-m-d H:i:s')

date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s'))

在逻辑上是相同的

另一个演示

编辑2

FuzzyTree的回答指出,虽然这两个陈述通常是正确的,但它们并不总是正确的。更多细节请看他的回答。