Adott 3 ertek, ev,hetszama,hetfo ebbol kellene keszitenem datumot.
En teljesen elakadtam, reggel ota nyomom a manult, valszeg elrontok valamit, mert sehogy sem jon ossze.
Remelem tudtok segiteni.
- 1624 megtekintés
Hozzászólások
Ha jól tévedek:
date('Y m d', mktime( 0, 0, 0, 0, 52*7, 2000))
- A hozzászóláshoz be kell jelentkezni
ebbol az derul ki, hogy 52*7 = 364, de
a nulladik het vagyis az elozo ev 52. heten meg lehetet januari datum, igy azt is hozza kellene adnom, ahhoz meg tudnom kell, hogy az elozo ev-nek az 52.-heten hany nap volt januarbol.
- A hozzászóláshoz be kell jelentkezni
date('Y m d', mktime( 0, 0, 0, 0, 26*7, 2006))
kimenet: 2006 05 31
most vana 26. het
- A hozzászóláshoz be kell jelentkezni
echo date('y m d l', mktime( 0, 0, 0, null, (26*7) + (33 - 7), 2006));
:) bocs
- A hozzászóláshoz be kell jelentkezni
33-7 az mi?
- A hozzászóláshoz be kell jelentkezni
Pontosan mit is akarsz csinalni? kicsit zavaros.
Adott év adott hetének hétfői napját akarod dátumban megszerezni?
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
igen
- A hozzászóláshoz be kell jelentkezni
// **************************************
$evszam = "2006";
$hetszam = "1";
$nap = "hetfo";
// **************************************
$realhet = $hetszam -1;
$eveleje = strtotime("$evszam-01-01");
$nap_array = array("","hetfo","kedd","szerda","csutortok","pentek","szombat","vasarnap");
$nap_szam = array_search($nap,$nap_array);
$timestring = "+$realhet week +$nap_szam day";
$unixido = strtotime("$timestring","$eveleje");
echo date('Y-m-d',$unixido);
- A hozzászóláshoz be kell jelentkezni
Na, én valahogy így értelmeztem, hogy a bemeneted:
$evszam int();
$hetszam int();
$nap varchar();
Vagy tévedtem?
- A hozzászóláshoz be kell jelentkezni
jol ertetted muxik, most pedig probalom ertelmezni, mert a hetfo igazabol szam lesz.
- A hozzászóláshoz be kell jelentkezni
Vagyis a $nap is int()?
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
igen int(date('w'));
- A hozzászóláshoz be kell jelentkezni
Akkor nem kell az array. $nap_szam = $nap;
- A hozzászóláshoz be kell jelentkezni
ezer kosz.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Szerintem az eddigi megoldások nem jók, mert azt tételezik fel, hogy az év első hete YYYY-01-01-el kezdődik. Kipróbáltam pl. 1988-al és teljesen hibás eredményeket adott.
Az ISO 8601 pontosan definiálja az első hetet (http://en.wikipedia.org/wiki/ISO_week_date), és a PHP is ezt használja.
function week ($ev, $het)
{
for ($n = 1; $n < 7; $n++)
{
$timestamp = strtotime ("$ev-1-$n");
if (date ("w", $timestamp) !== "1") $timestamp -= (date ("w", $timestamp)-1)*86400;
if (date ("W", $timestamp) === "01") break;
}
return $timestamp+604800*($het-1);
}
print date ("Y. m. d. - l, W.", week (1988, 1))." hét\n";
print date ("Y. m. d. - l, W.", week (1988, 9))." hét\n";
print date ("Y. m. d. - l, W.", week (2006, 26))." hét\n";
print date ("Y. m. d. - l, W.", week (1997, 1))." hét\n";
Eredmények:
1988. 01. 04. - Monday, 01. hét
1988. 02. 29. - Monday, 09. hét // szökőév volt
2006. 06. 26. - Monday, 26. hét
1996. 12. 30. - Monday, 01. hét // igen, 1997 első hetének hétfője 96-ra esik :)
- A hozzászóláshoz be kell jelentkezni
Közben javítottam rajta. Ez már rc változat :)
- A hozzászóláshoz be kell jelentkezni
1996:
Ez elkepzelheto es nem is hamis eredmeny. vagy tevedek?
- A hozzászóláshoz be kell jelentkezni
Direkt ellenőriztem mindent amit kipróbáltam és mindegyik jó volt. De ez az ISO szerinti számítás. Vannak más "szabványok" is, amiknél pl az első hét az első hétfővel kezdődik (vagy pl usaban eleve vasarnappal kezdődik a hét, ott is valami mas rendszer van). Más rendszerben 1997 első hete 1997. január hattal vagy öttel kezdődik.
Esetleg ha nem lenne kézenfekvő, akkor az ISO rendszernél van 53. hét is.
Igazából nem tudom, hogy nálunk mi a hivatalos, de úgy tudom az üzleti életben mindenhol az isot használják. Van valami halvány emlékem, mintha már láttam volna legolcsóbb lapozgatós naptárban 53. hetet és azt is, hogy az első hét nem hétfővel kezdődött.
- A hozzászóláshoz be kell jelentkezni