2014-07-21 4 views
-3

나는 전체 년, 월, 주에 달 수와 일변환 정수 년, 월, 주에 가치와 일 ​​

이 예제의 경우입니다 지정된 정수 값을 변환 할 필요가 작업을하고 있어요 주어진 값은 내가 2 날짜를 가지고 당신에게 필요한 출력을 제공 온라인 몇 가지 예를 찾을 수이 번호를 가지고 x years x months x weeks and x days

로 변환 할 수 있어야한다 62개월 다음하지만 내 요구 사항은 수를 가지고 있음을 변환하는 것입니다 년, 달, 주, 일로.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 고마워 할 것입니다.

+0

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

, 그것은 달의 일수가 일치하지 않기 때문에 달의 특정 숫자가 얼마나 많은 주 일을 알고 불가능합니다. 숫자 계산 방법을 정확하게 명료하게 작성해야합니다. –

답변

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

+0

고마워, 나는 이것이 내가 찾고있는 것일 수도 있다고 생각하고, 곧 당신에게 돌아갈 것이다. – Baig

+0

참고 : 일관된 결과와 같은 것을 원한다면 일주일/일 수를 기준으로합니다. :) – deceze

+0

이것은 내가 필요한 것에 가깝고 결과물은 5 년 1 개월 x 일이어야합니다. 이것은'62' 개월에 해당하는 것입니다 – Baig

5

"달"28 ~ 31 일에서 아무것도입니다. 그것은 명확한 일수 또는 주 수로 명확하게 나눌 수 없습니다. 왜냐하면 그것은 애매한 시간대이기 때문입니다. 정확한 시작 날짜와 "한 달"에 대한 명확한 사양을 알고 있다면 결과에 도달 할 수 있습니다. 그러나 단순히 "62 개월"만으로는 더 많은 설명이 없이는 변환이 불가능합니다.

+0

은 매월 31 일이라고 가정하고, 어떻게 달성 할 수 있습니까? – Baig

+0

간단한 곱셈과 나눗셈. – deceze

+0

간단한 곱셈은 내가 필요한 것은 아니지만 정확히 필요한 것입니다. 달이 '52'라고 가정 해 봅시다. 4 년, 4 개월이 '52 개월'이므로 – Baig

2

당신은 DateTime 함수에 내장 된 PHP를 사용할 수 있습니다. strtotime 당신이 찾고있는 결과를 좋은 깨끗한 형식으로 얻을 수 있습니까? 어떤 기준 날짜 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 
) 
+0

질문에 언급 된대로 날짜를 취할 수 있습니다. 나는 일할 정수 하나만 가지고 있습니다. 월은 – Baig

+0

입니다. 내 코드 – ins0

+0

을 업데이트하고 다시 연락 할 것입니다. – Baig