|
[ TeSiC @ 14.09.2008. 18:17 ] @
| 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?
|
[ Nikola Poša @ 14.09.2008. 18:56 ] @
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]
[ Miroslav Ćurčić @ 14.09.2008. 19:15 ] @
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.
[ Man-Wolf @ 16.09.2008. 09:25 ] @
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
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|