calculare data in functie de alta data

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

Avatar utilizator
menace_forevermore
Average Member
Mesaje: 128
Membru din: Mar Aug 07, 2007 9:21 am
Localitate: Barlad

calculare data in functie de alta data

Mesajde menace_forevermore » Lun Apr 12, 2010 2:08 pm

salut,

Problema cu care ma confrunt e in felul urmator:

am o variabila (string), reprezentand o data calendaristica de forma:

AAAA-LL-ZZ (ex. 2010-04-23)

cum as putea afla data finala scazand din aceasta un numar de zile ?

merci anticipat



zeltera
Junior Member
Mesaje: 43
Membru din: Mie Mai 18, 2005 2:06 pm
Contact:

Mesajde zeltera » Lun Apr 12, 2010 2:45 pm

Cod: Selectaţi tot


<?php
function daybefore($j){
$day = date('d');
$month = date('m');
$year = date('Y');
for ($i=0; $i<$j; $i++) {
if ($day==1) {
    if ($month == 1) {
        $day = 31;
        $month = 12;
        $year = $year - 1;
    } else {
        $month = $month - 1;
        switch ($month) {
            case 01:
                $maxdays=31;
                break;
            case 02:
                $a = $year / 4;
                $b = ceil($a);
                if ($a==$b){               
                     $maxdays=29;
                } else {
                      $maxdays=28;
                }
                break;
            case 03:
                $maxdays=31;
                break;
            case 04:
                $maxdays=30;
                break;
            case 05:
                $maxdays=31;
                break;
            case 06:
                $maxdays=30;
                break;
            case 07:
                $maxdays=31;
                break;
            case 08:
                $maxdays=31;
                break;
            case 09:
                $maxdays=30;
                break;
            case 10:
                $maxdays=31;
                break;
            case 11:
                $maxdays=30;
                break;
            case 12:
                $maxdays=31;
                break;
        }
        $day = $maxdays;
        $year = $year;
    }
} else {
    $day = $day - 1;
    $month = $month;
    $year = $year;
}}
return "$year-$month-$day";
}
echo daybefore(3);
?>



cod luat de pe http://php.net/manual/en/function.date.php

Avatar utilizator
menace_forevermore
Average Member
Mesaje: 128
Membru din: Mar Aug 07, 2007 9:21 am
Localitate: Barlad

re

Mesajde menace_forevermore » Lun Apr 12, 2010 3:31 pm

merci ! :wink:

Avatar utilizator
LyVyU VT
Senior Member
Mesaje: 224
Membru din: Lun Sep 29, 2008 8:58 am
Localitate: Râmnicu Sărat
Contact:

Mesajde LyVyU VT » Lun Apr 12, 2010 8:25 pm

Acolo la luna februarie nu e chiar asa de simplu. Pentru a intelege mai bine, vizitati link-ul http://ro.wikipedia.org/wiki/An_bisect

bema2004sw
Average Member
Mesaje: 50
Membru din: Dum Mai 24, 2009 10:18 pm
Localitate: Pe net ...

Mesajde bema2004sw » Lun Apr 12, 2010 8:55 pm

Multi dintre noi nu cred ca apucam 2100 :D

Avatar utilizator
Xposed
Average Member
Mesaje: 143
Membru din: Mie Ian 11, 2006 9:50 pm
Contact:

Mesajde Xposed » Mar Apr 13, 2010 11:39 am

Dar poate codul tau apuca 2100 :)

Uite o functie de detectie daca anul este sau nu bisect:

Cod: Selectaţi tot

function is_leap_year($year)
{
   return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
}

Louis
Average Member
Mesaje: 119
Membru din: Mie Feb 15, 2006 10:12 am
Contact:

Mesajde Louis » Mar Apr 13, 2010 7:49 pm

Cel mai simplu mi se pare sa transformi data ta in mktime, scazi sau adaugi dupa cum vrei 86400 * nr de zile (86400 secunde are o zi) apoi transformi din nou in data.


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 43 vizitatori