[ zgas @ 03.09.2007. 12:21 ] @
Potrebna je proverena klasa za rad sa datumima. Potrebno da ima oduzimanje datuma, dodavanje, preostalovreme i sl. Da radi u PHP5.

Vrlo je vazno da ne pravi greske u racunanju vremena, narocoto kod meseci kao februar kada ima 28 dana u mesecu i sl...

Molim vas za predlog.

Hvala.
[ Miroslav Ćurčić @ 03.09.2007. 17:40 ] @
Ne znam šta tu ima posebno sa datumima da bi se pravila klasa od toga.

Ako sa datumima i vremenima radiš na nivou integer-a onda je to boza.
Ako ne, onda ih konvertuj u integer pre operacija.
Ionako podatak o tekućem vremenu dobijaš od funkcije time() a ona vraća integer.

Fora je što je taj integer upravo ono što ti treba - bezbedan što se tiče meseci i prestupnih godina.

Jednostavnim sabiranjem mu dodaješ vreme, a razlika dva integera je preostalo vreme.

Ja čak i u mysql tabelama poljima dajem tip int(11) umesto date. Kad mi zatreba poređenje vremena u queriju (where vreme<$Sada) neću da razmišljam o tome koja je vremenska zona ili format zapisa, umesto toga koristim najobičnije poređenje integera. Znam da onda nije tako pregledno kad gledam tabelu kroz phpmyadmin, ali navikao sam tako.
[ hatebreeder @ 03.09.2007. 19:22 ] @
Citat:
mVeliki:
Ja čak i u mysql tabelama poljima dajem tip int(11) umesto date. Kad mi zatreba poređenje vremena u queriju (where vreme<$Sada) neću da razmišljam o tome koja je vremenska zona ili format zapisa, umesto toga koristim najobičnije poređenje integera. Znam da onda nije tako pregledno kad gledam tabelu kroz phpmyadmin, ali navikao sam tako.


@mVeliki dovoljno je int(10) jer je time() definisan iznad 2035. god a ispod 2040 a i tad taj broj od deset karaktera pocinje ako se ne varam sa 1 ili 2 tako da jos dugo dugo nece biti potreba za 11 kao duzinu :) izvini zbog ovog gundjanja al cisto da znas (ja sam se bavio raznim glupostima sve u ime optimizacije pa slobodno pitaj ako te jos nesto interesuje) :)

Poz

@zgas radi kako je mVelki rekao time ti je skroz bezbedno
[ zgas @ 03.09.2007. 19:58 ] @
Mnogo hvala obojici. Mozete li mi reci da ne zalutam:

Na koji nacin pretvaram naprimer datum u integer: '2008-08-30' (posto su mi u bazi datumi u ovom obliku)

I na koji nacin pretvaram na primer interval od 30 minuta u integer,

I stoga sledi pitanje : Kako da bi od tog integer datuma mogao da oduzme tih 30 minuta? Taj rezultat bi opet trebao da vratim u vrednost citljivu za coveka, znaci trebao bi da dobijem nesto kao:
"2008-08-29 23:30:00"

Moizete li mi dati primer kako to radim.
[ Nemanja Avramović @ 03.09.2007. 20:21 ] @
Potrebne su ti funkcije:
time() - dobiješ trenutni timestamp
date() - formiraš prikaz vremena/datuma u čoveku čitljivi oblik
mktime() - od čoveku čitljivog datuma/vremena praviš timestamp
[ mb_sa @ 03.09.2007. 20:30 ] @
Citat:
zgas: Na koji nacin pretvaram naprimer datum u integer: '2008-08-30' (posto su mi u bazi datumi u ovom obliku)


Mozes pomocu strtotime() koja kao parametar ocekuje neki od US formata datuma. Ostalo ti je rečeno
[ zgas @ 03.09.2007. 20:47 ] @
Hvala vam puno!
[ Miroslav Ćurčić @ 03.09.2007. 23:36 ] @
@hatebreeder: opet navika, ja mu obično stavim samo int a server sam doda (11)
Nego kad si se već bavio optimizacijama daj neki komentar u temi 'Benchmark PHP skripta'. Ja sam se optimizacijom bavio samo površno, a koristiće nam više iskustava.