Autor Zpráva
Stepanka
Profil *
Ahoj,

prosím, jak se dá přepsat formát datumu? Mám dejme tomu:

$do = '15.10.2008';


A teď bych z tady této proměnné potřebovala získat 2008-10-15.

Zkouším to třeba takhle
$do2 = date ("y-M-d", $do);
ale nic mi zatím nefunguje..

Pomůžete mi někdo? Děkuju.
ninja
Profil
datum v $do musis nejdrive preves na timestamp. Koukni na funkci strtotime().
Stepanka
Profil *
ninja
to už jsem taky zkoušela, ale nepovedlo se mi to.. Mám třeba

echo $do.'<br />';
$do = strtotime($do);
echo $do.'<br />';
$do2 = date ('Y-m-d', $do);
echo $do2.'<br />';


a výstupem je:

8.10.2008
-1
1970-01-01
BetaCam
Profil
Nevim jak u tebe, ale u mě má script :

$do = '15.10.2008';
echo $do.'<br />';
$do = strtotime($do);
echo $do.'<br />';
$do2 = date ('Y-m-d', $do);
echo $do2.'<br />';


výstup :

15.10.2008
1224021600
2008-10-15
ninja
Profil
Stepanka: strototime vetsinou funguje, i kdyz cesky zpusob psani datumu mu neni uplne koser. Jestli chces, zkus pouzit toto:

/**
 * int parsedate (string [, bool force_nonull ])
 *
 * Purpose:  Convert text date ('21. 5. 2008', '21.05.2008', atd) to unix timestamp (time ste to noon - middle of day!)
 *
 * If 2. param is TRUE and function should return null, return now() instead.
 *
 * @param string, string
 * @return int (unix timestmap)
 */

function parsedate ($data, $force = false) {
	if (ereg ('([0-9]{1,2})\. ?([0-9]{1,2})\. ?([1-9][0-9]{3})', $data, $datum))
		$output = mktime (12,0,0, $datum[2], $datum[1], $datum[3]);
	elseif ($force)
		$output = mktime (12,0,0);
	else
		$output = null;
	
	return ($output);
	}
Stepanka
Profil *
BetaCam
To je zvláštní, nemůže to být třeba tím, že tady mám PHP 4?
Stepanka
Profil *
ninja
Děkuju za tu funkci, moc mi pomohla :-) Už mi to funguje tak jak jsem chtěla..
ninja
Profil
Stepanka: jsem rad. Jen si dej pozor ze to vraci ten den v poledne a ne o pulnoci. Odpadaji pak nektere problemy u zmeny letniho/zimniho casu.
P_T_
Profil
vsprintf('%3$d-%2$02d-%1$02d', explode('.', $do));
Jack Finger
Profil
Stepanka
je možný, že to bylo tím, že jsi nezadala datum 08.10.2008, ale 8.10.2008.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0