Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

DateShifter - problem

[es] :: PHP :: DateShifter - problem

[ Pregleda: 2320 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

TeSiC

Član broj: 69948
Poruke: 98
*.telrad.net.



Profil

icon DateShifter - problem14.09.2008. u 18:17 - pre 190 meseci
imam funkciju DateShifter sa kojom mozes da pomjeras datum naprijed ili nazad (dodam ili oduzmem neki broj dana)
Code:
function DateShifter($shift)
{
    $day = date("d");
    $month = date("m");
    $year = date("Y");
    
    $new_day = $day + $shift;
    $new_month = $month;
    $new_year = $year;

if($shift < 0)
{    
    while($new_day < 1)
    {
        $new_month--;
        $new_day = date("t", mktime(0,0,0, $new_month,1,$new_year)) + $new_day;
        while($new_month < 1)
        {
            $new_month = 12 - $new_month;
            $new_year--;
        }
    }
}

else 
{
    $days_in_month = date("t", mktime(0,0,0,$new_month,1,$new_year));
    while ($new_day > $days_in_month)
    {        
        $new_day =$new_day - date("t", mktime(0,0,0,$new_month,1,$new_year));
        $new_month++;
        while($new_month > 12)
        {
            $new_month = $new_month - 12;
            $new_year++;
        }
    }
}

    $new_day = date("d", mktime(0,0,0,$new_month, $new_day, $new_year));
    $new_month = date("m", mktime(0,0,0,$new_month, $new_day, $new_year));
    $new_year = date("Y", mktime(0,0,0,$new_month, $new_day, $new_year));
    
    return $new_day.' '.$new_month.' '.$new_year;
}


$novi_datum = DateShifter(14); //14 oznacava koliko dana pomjeram datum naprijed


sve ovo savrseno radi kada je u pitanju danasnji datum, ali ne znam kako da napravim da mi datum vuce iz forme...tj. da mogu ja da zadam neki x datum.

znaci hocu da u form ukucam datum (npr. 10 - Januar - 2008) i da se taj datum ubaci u ovu funkciju umjesto danasnjeg.

ima li neko resenje za ovo?

 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-1.sezampro.yu.



+33 Profil

icon Re: DateShifter - problem14.09.2008. u 18:56 - pre 190 meseci
Pa mozhesh recimo da proshirish tu funkciju sa josh 3 parametra: dan, mesec i godina, a promenljivama $day, $month i $year treba da dodeljujesh vrednosti tih parametara. A ta forma bi trebala da sadrzhi npr. 3 select-a: za dan, mesec i godinu. Posle samo nekom skriptu prosledish te podatke za datum iz forme, a onda ih prosledish i toj funkciji...
Npr.
Code:

<html>
    <head>
        <title>Datum</title>
    </head>
    <body>
        <form name = "datum" action = "proracun.php" method = "POST">
            Dan: <select name = "dan">
                <option>01</option>
                <option>02</option>
                <option>03</option>
                        ...
                <option>29</option>
                <option>30</option>
                <option>31</option>
                </select>
            Mesec:     <select name = "mesec">
                    <option>01</option>
                    <option>02</option>
                    <option>03</option>
                        ...
                    <option>10</option>
                    <option>11</option>
                    <option>12</option>
                    </select>
                    
            Godina: <select name = "godina">
                    <option>1970</option>
                    <option>1971</option>
                    <option>1972</option>
                        ...
                    <option>2006</option>
                    <option>2007</option>
                    <option>2008</option>
                    </select>
            <input type = "submit" name = "posalji" value = "Posalji" />
        </form>
    </body>
</html>


Code:

//proracun.php
<?php     

    if ($_POST['posalji']){
    
        $dan = $_POST['dan'];
        $mesec = $_POST['mesec'];
        $godina = $_POST['godina'];
    
        $datum = DateShifter($dan , $mesec, $godina, 14);
        echo $datum;
    }
    
?>


Taj broj dana za koji shift-ujesh mozhesh takodje da unosih u toj formi, ja sam ovo ispisao chisto primera radi. Takodje, mozhe da se napravi i f-ja za pravljenje select-a za godinu, chisto da ne bi ruchno unosio sve godine. :) Naravno, datum mozhesh da unosish i u tekst. polju, al' onda bi to iz polja moralo da se "provuche" kroz neke f-je za obradu stringova (kao shto je explode), kako bi se izvukli dan, mesec i godina...

btw Ne vidim bash neku funkcionalnost u toj f-ji DateShifter, al' dobro...

[Ovu poruku je menjao Nikola Poša dana 14.09.2008. u 20:31 GMT+1]
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: DateShifter - problem14.09.2008. u 19:15 - pre 190 meseci
Cela funkcija DateShifter je besmisleno komplikovana, isto bi dobio i sa:
Code:
echo date('d m Y', time()+$shift);


Tebi je ovde potrebno da na neki način pretvoriš oblik '10 - Januar - 2008' u integer kojim bi zamenio ono "time()".
Explode-uj taj string po crtici "-" pa svaki element konvertuj u integer.
Posle upotrebi te integere u mktime funkciji i dobio si pomereno vreme.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: DateShifter - problem16.09.2008. u 09:25 - pre 190 meseci
A zar nije jos lakse koristiti funkciju: strtotime() ?

Code:


// Primeri su preuzeti sa php.net!

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";

// Da bi dobio tacan datum a ne timestamp, koristis ovako:

echo date("d-m-Y". strtotime("+1 day")); // Na primer :-)
?>




Link: http://www.php.net/manual/en/function.strtotime.php

Pozdrav
 
Odgovor na temu

[es] :: PHP :: DateShifter - problem

[ Pregleda: 2320 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.