PHP time();

Programovacie jazyky, rady, poradňa...
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

PHP time();

Príspevok od používateľa atlox »

Prosím vás, neviete mi niekto poradiť fintu alebo postup ako "rozkúskujem" (nespomeniem si na odborný názov) čas vrátený z funkcie time() v PHPčku?

ide mi o toto... : funkcia time() mi vráti číslo 1186760963 a ako zistiť z tohoto čísla aký je dátum a čas v tvare napr.:

Pi - 10. 8. 2007 - 17:50:12

Viem, že time() vracia počet sekúnd od 1.1.1970, no len :( neviem ako to rozkúskovať... PLS poradte spôsob... Vďaka! :!:
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

date("format");
kde format je string zlozeny z riadiacich znakov ktore su uvedene na php.net
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Ale jedna sa mi o to, že v databáze mám uložené iba čísla vrátené z funkcie time()... a ja to potrebujem rozkúskovať každý osobitne vo formáte, aký som napísal. Nechcem aktuálny dátum a čas....
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

date($format, time());
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

toto je prave ta vec ktoru on nepotrebuje. on ma v DB cas v "unix timestamp" (alebo ako sa to vola) formate. cize on tam ma splet cisel a s tymi sa da pocitat a robit rozdiely a tak. tu je problem toto nezmyselne cislo previest do "zmyselneho" :D formatu. a to co si napisal je tusim finta ktorou to spravi opak. alebo nie?
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Ale funguje to :) aha:

$cas = "1186662211";
$dni = array ("Ne","Po","Ut","St","Št","Pi","So");
echo ($dni[date("w",$cas)].date("-d.m.Y-H:i:s",$cas));

(presne to čo som chcel) už len dosadiť premenné z databázy...

Vrelá vďaka chalani :wink: :!:
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

ehm no sekol som sa (ako tradicne), ale hlavne ze to fici :)
teraz ked je uz zalezitost vyriesena, tak by som sa ja chcel nieco spytat. taaakze:
mam ulozene v DB udaje o uzivateloch. v user_birth_day je den kedy sa uzivatel narodil a potom dalsom mesiac a rok. chcel by som spravit funkciu, ktora mi vypocita presny vek uzivatela. spravil som to takto:

Kód: Vybrať všetko


function age($id) {
include ("./common/setup.php");
$sql = mysql_query("SELECT * FROM $tab_users WHERE user_id='$id' ");
$user=mysql_fetch_array($sql);
$user_day=$user[user_birth_day];
$user_month=$user[user_birth_month];
$user_year=$user[user_birth_year];

$user_birth=mktime(0,0,0,$user_month,$user_day,$user_year);

$thour=date('H');
$tmin=date('i');
$tsec=date('s');
$tmonth=date('n');
$tday=date('d');
$tyear=date('Y');

$now=mktime($thour,$tmin,$tsec,$tmonth,$tday,$tyear);

$age=$now - $user_birth;
$age = $age / 31536000 ;

$age = SubStr($age, 0, 2);

return $age;
}
je to vlastne matematicka operacia. ono to aj funguje, ale je to nespravne a to ma aj pomerne stve a navyse to aj zaokruhluje. asi 5 dni pred narodkami to uz ukazuje vyssi den. viem, ze da sa rovno pomocou query dostat z DB vek, ale to by som musel mat v inom tvare a ja to uz mam takto spravene :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

turtlak69 napísal:...
To s vekom sa tu už riešilo (skúsim to pohľadať).

http://www.hojko.com/pocitanie-veku-t64741.html
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Turtlak69 ak môžeš zmeniť nejako formát narodenín v databáze na DD/MM/RRRR tak použi tento môj script (ak ti teda pomôže):

Kód: Vybrať všetko

function vek($vstup)
{
	$pole = explode("/",$vstup);
	$den = $pole[0];
	$mesiac = $pole[1];
	$rok = $pole[2];

	$month = Date ("n");
	$day = date("j");
	$vek = date ('Y') - $rok - 1;
	if (($month == $mesiac) && ($day >=  $den) || ($mesiac < $month)) : $vek = $vek + 1; endif;
	return $vek;
}
potom už daš iba vypísať napr: echo (vek(premenná));
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

presne toto som hladal. aj prestupne roky aby sa spravne pocitali. thx ;)
idem to nakodit :)

atlox: poskusam a uvidim, co bude ficat najkrajsie ;)

hotovo:

Kód: Vybrať všetko

function age($id) {
include ("./common/setup.php");

$sql = mysql_query("SELECT * FROM $tab_users WHERE user_id='$id' ");
$user=mysql_fetch_array($sql);
$user_day=$user[user_birth_day];
$user_month=$user[user_birth_month];
$user_year=$user[user_birth_year];

$user_birth=mktime(0,0,0,$user_month,$user_day,$user_year);

$today = time();
$birthDate = mktime(0,0,0,8,12,1988);
$age = floor(($today-$user_birth)/(365.25*24*60*60));

return $age;
}
thx ;)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

turtlak69 napísal:...
Rok nemá 365.25 dní ;)
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

chrono napísal:Rok nemá 365.25 dní ;)
ale ma ;) rataj to globalne. jeden rok ma sice 365, ale su aj prestupne roky. a prestupny ma 366. takze jeden rok musi mat 365,25 a tusim aj ty si to tam niekde spomenul ;)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Lenže ešte je pravidlo, že rok nie je priestupný ak je deliteľný 100 a nie je deliteľný 400 (teda napr. 1900 nie je priestupný rok). (takže rok má menej ako 365,25 dňa)
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

no zbohom :D takze to ciselko teda nie je uplne presne. moze to ale sposobovat nejaku nepresnost s vypoctom? napriklad posuv?
teraz uz fakt neviem ako by som to spravil :(
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Kód: Vybrať všetko

function age($day, $month, $year)
{
	$m = date ("n");
	$d = date("j");
	$y = date("Y");
	$age = $y - $year;
	if (($m < $month) || ($m == $month && $d < $day)) $age--;
	return $age;
}

include ("./common/setup.php");

$sql = mysql_query("SELECT * FROM $tab_users WHERE user_id='$id' ");
$user=mysql_fetch_array($sql);
$user_day=$user[user_birth_day];
$user_month=$user[user_birth_month];
$user_year=$user[user_birth_year];

echo age($user[user_birth_day], $user[user_birth_month], $user[user_birth_year]);
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

thx, vyzera to sice tak isto, vek to vypocitalo tak ci tak dobre, ale dam radsej na teba ;) celkovo funkcia vyzera uz takto a toto uz bude asi aj final verzia

Kód: Vybrať všetko

function age($id) {
include ("./common/setup.php");

$sql = mysql_query("SELECT * FROM $tab_users WHERE user_id='$id' ");
$user=mysql_fetch_array($sql);
$user_day=$user[user_birth_day];
$user_month=$user[user_birth_month];
$user_year=$user[user_birth_year];

   $m = date ("n");
   $d = date("j");
   $y = date("Y");
   $age = $y - $user_year;

if (($m < $user_month) || ($m == $user_month && $d < $user_day)) $age--;

return $age;
}
turtlak69
Guru
Guru
Príspevky: 2896
Registrovaný: 10 máj 2007, 15:58
Bydlisko: /dev/null

Príspevok od používateľa turtlak69 »

este pridam taky mali script, ktory urobi datum "peknym"

Kód: Vybrať všetko

$time_days = array ("Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota");
$time_months = array ("December","Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November");

   $m = date("n");
   $d = date("j");
   $y = date("Y");

$cas=mktime(0,0,0,$m,$d,$y);
//tento cas je ako priklad. ja cucam ten cas z DB ako to zazracne ciselko
$lol[d] = $time_days[date("w",$cas)];
$lol[d2] = date("d",$cas);
$lol[m] = $time_months[date("n",$cas)];
$lol[y] = date("Y",$cas);

echo "$lol[d] - $lol[d2].$lol[m] $lol[y]";
vysledok:
Streda - 15.August 2007

alebo ako funkcia

Kód: Vybrať všetko

function nice_time($cas)
{
$time_days = array ("Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota");
$time_months = array ("December","Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November");
$lol[d] = $time_days[date("w",$cas)];
$lol[d2] = date("d",$cas);
$lol[m] = $time_months[date("n",$cas)];
$lol[y] = date("Y",$cas);
$nice_time = "$lol[d] - $lol[d2].$lol[m] $lol[y]";

return $nice_time;
}
kde $cas je cas po prikaze mktime
Napísať odpoveď