将整数值转换为年,月,周和日

时间:2014-07-21 09:15:31

标签: php

我正在处理一项任务,我需要将给定的整数值转换为年,月,周和日的总月数

例如,如果给定的值是62个月,那么我应该能够获取此数字并将其转换为x years x months x weeks and x days

我可以在网上找到几个带有2个日期并提供所需输出的例子,但我的要求是取数字并将其转换为年,月,周,日。

如果有人能指出我正确的方向,我将非常感激。

3 个答案:

答案 0 :(得分:5)

考虑到并非所有月份都相同,我们无法获得完全准确的结果。不知道哪个月和哪几年,你可以得到的最接近的是近似值,使用简单的数学:

$months = 62;

$days = $months*30; //or 28 or 31 or 29(leap year)
$weeks = $months*4; //or $days/7;
$years = $months/12; //or floor($months/12) . ' years and ' . $months%12 . ' months'

See demo

答案 1 :(得分:5)

"一个月"是28至31天。它不能明确划分为特定的天数或周数,因为它是一个模糊的时间跨度开始。如果您知道确切的开始日期和明确的#34;一个月的规格,那么您可以得到一个结果。但仅仅是#62; 62个月"如果没有更多的澄清,它本身是不可能转换的。

答案 2 :(得分:2)

你可以使用内置DateTime函数的php,strtotime以干净的格式获取你想要的结果。

http://php.net/manual/de/datetime.diff.php

http://de1.php.net/manual/de/function.strtotime.php

$months = 62;
$dateTime = new DateTime();
$newDateTime = $dateTime->diff(
    new DateTime(date("Y-m-d H:i:s", strtotime(sprintf('-%s Months', $months))))
);

print_R($newDateTime);
DateInterval Object
(
    [y] => 5
    [m] => 2
    [d] => 0
    [h] => 0
    [i] => 0
    [s] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 1887
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)