Php 将整数值转换为年、月、周和天

Php 将整数值转换为年、月、周和天,php,Php,我正在进行一项任务,需要将给定的整数值(月总数)转换为年、月、周和日 例如,如果给定值为62months,则我应该能够获取该数字并将其转换为x年x月x周和x天 我可以在网上找到几个例子,其中包含2个日期,并提供所需的输出,但我的要求是获取数字并将其转换为年、月、周、日 如果有人能给我指出正确的方向,我将不胜感激。考虑到并非所有月份都相等,所以不可能得到完全准确的结果。在不知道哪个月和哪个年的情况下,你能得到的最接近值是一个近似值,使用简单的数学: $months = 62; $days = $

我正在进行一项任务,需要将给定的整数值(月总数)转换为年、月、周和日

例如,如果给定值为
62
months,则我应该能够获取该数字并将其转换为
x年x月x周和x天

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


如果有人能给我指出正确的方向,我将不胜感激。

考虑到并非所有月份都相等,所以不可能得到完全准确的结果。在不知道哪个月和哪个年的情况下,你能得到的最接近值是一个近似值,使用简单的数学:

$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'

“一个月”是指28到31天之间的任何时间。它不能被清楚地划分为特定的天数或周数,因为它是一个模棱两可的时间跨度开始。如果你知道确切的开始日期和“一个月”的明确规格,你可以得到一个结果。但是如果没有更多的说明,简单的“62个月”本身是不可能转换的。

您可以使用php内置的
DateTime
函数,
strotime
以一种干净的格式获得您想要的结果


由于没有参考日期,不可能知道某个月有多少周和多少天,因为一个月的天数不一致。你需要清楚地说明你希望如何计算这些数字。谢谢,我想这可能就是我想要的,很快就会给你回复。注意:如果你想要一致的结果,我会根据天数/7计算周数…:)这接近我需要的,输出应该是5年1个月x天,因为这等于
62
months@ins0当然,这在我的回答中已明确说明。最终,这是一个不可能解决的问题——我的回答中也提到了这一点。这里的要点是做一个近似。从
62
获得
5年零2个月
基于每年12个月的假设,只需要数学就可以了。非常感谢@MarkM这正是我想要的。我知道这是不准确的,因为一个月的天数有时会有所不同,但现在就可以了。我真的很感谢大家在这方面的反馈和帮助。假设每个月是31天,那么如何实现呢?简单的乘法和除法。简单的乘法接近我需要的,但不完全是我需要的,假设这个月是
52
我想要的是4年,4个月,因为这是
52
个月,直到简单的数学。除以12得到年份。绕过它。从月数中减去以得到余数。那是你的月份。再乘以以获得周/天。始终四舍五入并减去以得到余数。您可以考虑日期,正如问题中所述,我只有一个整数要处理,它是
月份
,我正在研究它,并将返回给您
$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
)