2012-03-01 24 views
6

Ho uno script di shell (zsh, per la precisione) che utilizza"USA/Eastern" e "US/Central" e "US/Pacific" sono deprecati per strftime o solo per PHP?

strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS"

per generare un "ora corrente", come

"14:45 CST (gio, 1 marzo) "

Questo deve essere in grado di visualizzare l'ora in diversi fusi orari USA, e così ho usato 'US/Eastern', 'US/centrale', e 'US/Pacific' in questo modo:

export TZ='US/Eastern' 
strftime "%I:%M %p %Z (%a, %b %d)" "$EPOCHSECONDS" 

Sembra funzionare bene, e preferisco usare TZ = 'America/CityName' perché non mi richiede di sapere in quale città si trova TZ, ho solo bisogno di dirgli quale TZ voglio.

Tuttavia, mi è capitato tra http://www.php.net/manual/en/timezones.others.php e ho visto che si dice

Si prega di non utilizzare uno dei fusi orari elencati qui (oltre UTC), esistono solo per ragioni compatibili con versioni precedenti.

Non so quali sono i problemi con i nomi di Stati Uniti/Regione, ma sono curioso di sapere se utilizzarli potrebbe causare un problema nel prossimo futuro, o sono ancora sicuri da usare ? È solo PHP a cui non piacciono, o tutti si stanno allontanando da loro?

risposta

7

Il formato standard per la denominazione dei fusi orari nel database Olson è Continente/Città. I "vecchi" nomi che menzioni come US/Eastern, US/Central e molti altri, sono elencati come link di compatibilità all'indietro nella distribuzione dei sorgenti tzdata (nel file "backward"). Secondo il commento in cima al file, questi nomi potrebbero essere diventati collegamenti a ritroso alla fine del 1993.

Penso di ricordare che questo standard è stato adottato perché ritenuto più stabile: geopolitico (paese) i confini cambiano, le città non si muovono mai. Forse anche perché nomi come "Orientale" e "Centrale" sono pensati per essere più confusi perché significano diversi fusi orari in diverse parti del mondo. Tuttavia, al momento non riesco a trovare alcun riferimento alle motivazioni di denominazione, quindi non citarlo su questo.

I nomi di stile Continente/Città sono preferiti. Nota che i sistemi operativi come Debian e Ubuntu ti chiedono di selezionare il fuso orario del sistema usando questi nomi (a meno che non lo rilevino automaticamente al momento dell'installazione), usando questi nomi non ti sarà realmente richiesto, come dici tu, "sapere in quale città si trova quale TZ "perché il nome della città è, beh, parte del nome del fuso orario! Quindi, se hai appreso i nomi di Continente/Città anziché o in aggiunta ai nomi dei Paesi/regioni, sei già a posto.

Ciò detto, non penso che questi nomi spariranno mai. Nella mailing list del fuso orario, sono sempre definiti "retrocompatibilità", non "deprecati" e sono destinati a rimanere, nonostante quanto raccomandato da PHP.