我的格式(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;。
答案 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来获取时间戳,然后获得差异。
答案 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)
如果你想比较两个日期之间的差异: 通过
将字符串转换为dateformatnew 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)
通过查看各个组件之间的分隔符来消除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