PHP strtotime使用m-d-Y格式

时间:2013-11-05 22:28:00

标签: php date strtotime

我的格式(m-d-Y)月 - 日 - 年份的日期。我试图减去日期。我不能使用strtotime()因为它不能以那种格式工作。如何用m-d-Y格式减去日期?

<?php
  date_default_timezone_set('America/Chicago');

  $olddate = "11-04-2013"; 
  $today = date("m-d-Y");

  $days = $olddate - $today;

  echo $days;

?> 

如果我使用strtotime,我的结果(截至2013年5月11日)是&#34; 30&#34;。但我不能除以30.如果我将旧日期改为&#34; 10-04-2013&#34;,那么结果也是&#34; 30&#34;。

7 个答案:

答案 0 :(得分:3)

你应该使用php的DateTime类({5.3}为createFromFormat}:

$olddate = DateTime::createFromFormat('m-d-Y', '11-04-2013');    // for example, see manual for formats
$today = new DateTime();

$diff = $today->diff($olddate);
$diff_string = $diff->format('%a days');

答案 1 :(得分:1)

您可以使用DateTime :: createFromFormat来获取时间戳,然后获得差异。

http://www.php.net/manual/en/datetime.createfromformat.php

答案 2 :(得分:1)

DateTime类,或者您使用str_replace() - 使用/它应该可以正常使用strtotime()。这是一种常见的美国日期格式订单,但分隔符不是。

答案 3 :(得分:1)

您可以使用DateTime类:

$oldDate = \DateTime::createFromFormat('m-d-Y', "11-04-2013");
$today = new \DateTime('today');

$difference = $today->diff($oldDate);
echo $difference->format('%a');

答案 4 :(得分:1)

如果你想比较两个日期之间的差异: 通过

将字符串转换为dateformat
new DateTime("11-04-2013") or new DateTime(date("m-d-Y"))

$diffe = new DateTime("11-04-2013")->diff(new DateTime(date("m-d-Y")));
echo $diffe->format('%R%a days');    

答案 5 :(得分:1)

来自documentation

  

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

只需更换字符即可。你可以通过这样的程序方式获得自约会以来的天数:

$date = '11-04-2013';
$time = strtotime(str_replace('-','/',$date));
$now = strtotime(date('Y-m-d'));
$diff = $now - $time;
$days = $diff / (24 * 60 * 60);
echo $days;

答案 6 :(得分:0)

我想你可以调查一下:http://www.php.net/manual/en/datetime.diff.php

示例#1 DateTime :: diff()示例

面向对象的风格

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>

程序风格

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

以上示例将输出:

+2 days