[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.