我正在处理一项任务,我需要将给定的整数值转换为年,月,周和日的总月数
例如,如果给定的值是62
个月,那么我应该能够获取此数字并将其转换为x years x months x weeks and x days
我可以在网上找到几个带有2个日期并提供所需输出的例子,但我的要求是取数字并将其转换为年,月,周,日。
如果有人能指出我正确的方向,我将非常感激。
答案 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'
答案 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
)