date_default_timezone spørsmålet

stemmer
0

Jeg skrev en ganske lang funksjon som skal beregne forskjellene i tidssoner over hele USA i forhold til serveren tidssone. Jeg har lagt merke til at ved å bruke default_timezone_set () at jeg kan få de samme dataene tilbake at min funksjon beregner. Jeg har valgt å ikke bruke default_timezone_set funksjon fordi jeg er redd for at dette endrer tiden på et globalt nivå, og at hvis en ny forespørsel et annet som skjer i min app, at feil tid vil bli brukt; det vil si den tid som blir beregnet i dette øyeblikk ved hjelp av default_timezone_set funksjon.

Kan noen bekrefte dette for meg? Kan jeg bare bruke timezone_set funksjon uten å måtte bekymre seg om muligheten for feil ganger blir brukt i andre funksjoner? Håper dette er klart.

Publisert på 30/12/2009 klokken 00:46
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Du bør ta en titt på hvordan PHP bestemmer hva tidssone til bruk i fravær av date_default_timezone_set(). Det er beskrevet under date_default_timezone_get () funksjon.

I utgangspunktet, hvis du ikke bruker date_default_timezone_set(), så PHP er mest sannsynlig å bruke serveren tidssone som standard tidssone for alle datofunksjonene uansett, med mindre du har skjedd å ha satt en av de andre innstillingene oppført under date_default_timezone_get().

Hvis du spesifikt satt tidssonen hjelp date_default_timezone_set(), så er du å sørge for tidssonen at koden vil bruke, heller enn å la serveren tidssone bestemme for deg.

Hvis du ønsker å bruke serveren tidssone, så det er lurt å bare sette tidssonen til serveren tidssone ved hjelp av date_default_timezone_set(), og all tvetydighet er fjernet.

Så, er det for sent for det korte svaret, men det korte svaret er ja, bør du være i stand til å bruke date_default_timezone_set()trygt.

Svarte 30/12/2009 kl. 00:53
kilden bruker

stemmer
0

PHP har allerede en funksjon for å beregne forskyvninger mellom tidssoner:

timezone_offset_get()

Under PHP manualen, er prøven use case vist. timezone_offset_get () . Her er et eksempel på hvordan du beregner tidsforskyvning mellom to tidssoner.

$offset = get_timezone_offset('America/Los_Angeles','America/New_York'); //result is 10800 (3 hours)
$offset = get_timezone_offset('America/Los_Angeles'); //compares against default server timezone

Etter å ha fått forskyvningen i sekunder, kan du gjøre hva beregningene du trenger å gjøre.


Angående å sette standardtidssoner er det to måter å gå om du gjør det.

  1. Juster php.ini å sette standard tidssone (legg til følgende linje i php.ini fil)

    date.timezone = "Din / zone"

  2. Juster standard tidssone under kjøring (ved hjelp av nevnte date_default_timezone_set("Your/Timezone"))

Avhengig av serveroppsettet. Chaning php.ini kan ikke tre i kraft på grunn av php.ini forrang. Det kan være andre php.ini sted i serveren som går foran enn den du redigerer

Svarte 10/03/2014 kl. 22:14
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more