DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Daylight Saving Time pitanje (http://www.devprotalk.com/showthread.php?t=2377)

Ilija Studen 06. 02. 2007. 09:44

Daylight Saving Time pitanje
 
Ovo me već neko vreme interesuje, ali nikako da studioznije pristupim problemu (čitao, znam istoriju, ali me opet buni).

Kako u PHP-u pravilno implementirati DST (Daylight Saving Time)? date('I') vraća da li je datum u DST ili ne. Iz manuala:

Citat:

I (capital i) - Whether or not the date is in daylight saving time - 1 if Daylight Saving Time, 0 otherwise.
Problem je što ne znam šta tačno da radim sa tim. Da li je ova implementacija OK:

PHP kôd:

/**
* Return local time based on user's timezone and DST
*
* @param integer $timestamp Original, GMT time
* @param integer $timezone_offset Timezone offset in seconds
* @param boolean $use_dst
* @return integer
*/
function get_local_time($timestamp$timezone_offset$use_dst false) {
  
$result $timestamp $timezone_offset;
  if(
$use_dst && (integer) date('I'$result)) {
    
$result += 3600;
  }
  return 
$result;



zira 06. 02. 2007. 09:49

Pa ovo I ti vraca serversko vrijeme, a tebi treba korisnikovo? Mislim, moze biti da je server u DST, a da korisnik nije...

oliver 06. 02. 2007. 19:06

^Yep :) Ovo bi trebalo da ide u "user preferences" zajedno sa vremenskom zonom, pa da vrsis korekciju na osnovu toga kako je korisnik izabrao.

ivanhoe 06. 02. 2007. 23:25

a sta ce ti kasting u integer unutar IF ? Zar ne bi bilo logicnije da ga prebacis u boolean, ako vec hoces da explicitno radis cast... or am I missing the point?

Ilija Studen 07. 02. 2007. 02:50

Citat:

Originalno napisao ivanhoe
a sta ce ti kasting u integer unutar IF ? Zar ne bi bilo logicnije da ga prebacis u boolean, ako vec hoces da explicitno radis cast... or am I missing the point?

Ma uopšte nije ni morao cast; tu funkciju sam kucao iz glave kao primer da ima nešto kao osnova za komentarisanje. Sve mi se čini da ću negde naći vBulletin ili tako nešto i bunariti po kodu da vidim kako su to oni rešili.

ivanhoe 07. 02. 2007. 04:19

Sa wikipedije:
Citat:

Due to daylight saving time, UTC is local time at the Royal Observatory, Greenwich only between 01:00 UTC on the last Sunday in October and 01:00 UTC on the last Sunday in March. For the rest of the year, local time there is UTC+1
mada ako znas da li je na serveru na snazi DST, onda mozes da pretpostavis da je i korisniku, sem u prelaznim trenucima... i pod uslovom da se u njegovoj zemlji koristi, naravno..

Ilija Studen 07. 02. 2007. 05:14

Imam listu država kao resurs unutar koda koji uvek koristim tako da mi nije problem da dodam svojstvo državi da li koristi DST ili ne. Na osnovu toga bih mogao da napravim nešto što vB ima - polje u korisničkom panelu gde korisnik bira da li da mu se podrška za DST određuje automatski (na osnovu odabrane države) ili pak da li je uključena ili isključena bez obzira na državu.

Btw, ako ima neko vB sa sve kodom neka mi ga pošalje na mail (ilija.studen@gmail.com) da proučim kako su oni to rešili.

oliver 07. 02. 2007. 07:39

:1049:

zextra 07. 02. 2007. 12:47

@Ilija: da li si znao da u razlicitim drzavama DST pocinje i zavrsava se u razlicito vreme?

Daylight Saving Time transitions in 2007

zekica 07. 02. 2007. 19:25

Ja mislim da je najbolje koristiti date_default_timezone_set(), ako je verzija PHP-a veca od 5.1, u suprotnom podesiti environment promenljinu TZ, jer sam sistem "zna" da li je u datoj vremenskoj zoni aktivan DST ili nije.


Vreme je GMT +2. Trenutno vreme je 15:46.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.