【问题标题】:Subtracting days, months or years from date using php [closed]使用php从日期减去天、月或年[关闭]
【发布时间】:2014-01-03 10:43:55
【问题描述】:

我有一个带有startBefore 日期字段('Y-m-d') 格式的数据库表。还有 3 个其他 int 字段代表年、月和日。我想做的是将这三个字段填充为'Y-m-d' 格式的新startAfter 日期。

例如,我将 '2001-11-14' 作为 startBefore 日期,我想减去 3 年 7 个月 1 天得到 startAfter 日期。

有什么想法可以做到这一点吗?

谢谢!

【问题讨论】:

标签: php date


【解决方案1】:

使用strtotime('date -years -months -days')

  <?php
    $time = strtotime('2001-11-14 -3 years -7 months -5 days');
    echo $date = date("Y-m-d", $time);

【讨论】:

  • 它不起作用,因为结果是 1999-06-19 这是错误的。您的示例正确的应该是 1998-04-13。
  • 它对我来说很好,它返回 1995-11-14 我从中减去 3 年 7 个月零 5 天。再次检查并告诉我
  • 是的,工作正常。结果是:1998-04-09。开始从“2001-11-14”中减去 3 年 7 个月 5 天。但是我不知道它是否考虑到闰年和二月。
  • 我认为最好的方法是首先将年转换为天,将月转换为天,然后使用您的代码添加剩余的天数来获取结果。谢谢!
  • tomexsans有一个更好的解决方案IMO,它更OO,更易阅读,代码更少,扩展性更强。
【解决方案2】:

DateTime来了:

$start_date = '2013-03-06';
$date = DateTime::createFromFormat('Y-m-d',$start_date);

$date->modify('+1 month');
echo $date->format('Y-m-d');//2013-04-06

$date->modify('+4 year');
echo $date->format('Y-m-d');//2017-04-06

$date->modify('+6 day');
echo $date->format('Y-m-d');//2017-04-12

$date->modify('+24 hours');
echo $date->format('Y-m-d');//2017-04-13

$date->modify('-7 years');
echo $date->format('Y-m-d'); //2010-04-13

$date->modify('-18 months');
echo $date->format('Y-m-d'); //2008-10-13

以此类推。

【讨论】:

  • 好的,如果你在当前日期计算,它可以工作:$start_date = date('Y-m-d');
【解决方案3】:

你可以试试

strtotime php 中的函数非常简单

<?php 
echo date("jS F, Y", strtotime("11.12.10")); 
// outputs 10th December, 2011 

echo date("jS F, Y", strtotime("11/12/10")); 
// outputs 12th November, 2010 

echo date("jS F, Y", strtotime("11-12-10")); 
// outputs 11th December, 2010  
?> 

【讨论】:

  • 为了使这成为一个有价值的答案,请您添加示例/代码。
  • 感谢 ciaran 让我知道
  • 完美!否决票已撤回。
【解决方案4】:

一种方法是使 startBefore 日期成为时间戳,而不是使用数字并重新获得 startAfter 日期,另一种方法是尝试直接从日期中减去天、月和年。

【讨论】:

  • 如何直接从日期中减去天、月、年?谢谢。
  • 对不起,我在哪里搜索,看来你毕竟需要使用时间戳,“格式”和减去需要时间戳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
相关资源
最近更新 更多