Domanda

I problemi di internazionalizzazione connessi con la gestione delle stringhe possono praticamente essere risolti seguendo il consiglio:. Utilizzare Unicode e memorizzare tutto come UTF-8 nel database, allora sarete in grado di servire i clienti che utilizzano tutte le lingue del mondo

Ma per quanto riguarda i problemi connessi con la gestione di internazionalizzazione data / ora?

Domande:

  • Ci sono simili facile da seguire le procedure per risolvere i problemi di internazionalizzazione tempo che circondano la manipolazione?
  • Come si fa a fare che le applicazioni possono servire i clienti che operano in diversi fusi orari? Quali problemi avete incontrato e come hai fatto a risolverli?
È stato utile?

Soluzione

Ho seguenti consigli,

  1. Conservare tutto il tuo tempo in database con un fuso orario, preferibilmente Zulu (GMT).
  2. Assegnare un fuso orario per ogni utente al momento della registrazione. Normalmente questo numero dalla lingua della pagina di registrazione o il codice incorporato nel link promozione. A volte, dobbiamo chiedere all'utente.
  3. Fai clienti fuso orario-aware. Ciò significa cliente non può visualizzare l'ora dal server come è. Deve essere visualizzato in fuso orario locale e in formato locale.
  4. Client dovrebbe fare qualche sforzo per ottenere informazioni fuso orario del sistema. In caso contrario, il server può indovinare da vari dati. Abbiamo ottenuto buoni risultati utilizzando la lingua, poi indirizzo IP. In ogni caso, il cliente ha bisogno di visualizzare l'ora con info zone così l'utente sa cosa sta succedendo quando il tempo è sbagliato.
  5. Hai bisogno di bandiere speciali per alcuni valori di ora che non è influenzata da fuso orario. Abbiamo avuto un errore che i cambiamenti di compleanno degli utenti quando cambiano il loro locale. Altre cose appartenenti a questa categoria compresi i festivi, orari di apertura ecc.
  6. Se si deve sincronizzare l'orologio con il server, si prega di non modificare l'ora del sistema, basta memorizzare il delta nel client. Abbiamo avuto un requisito di sicurezza che l'orologio deve essere in sintonia con l'ospite. Quindi, il nostro cliente si sincronizza l'orologio di sistema con il nostro server all'avvio. Questa è la cosa sbagliata da fare. Per i sistemi più vecchi come Windows 95 senza fuso orario, abbiamo cambiato il loro tempo in GMT. Infine, i clienti più anziani sono andati via ma ci si trovano ad affrontare un nuovo problema è che abbiamo incasinato l'ora esatta da NTP.

Spero che alcuni dei nostri errori vi aiuterà a evitare di loro.

Altri suggerimenti

ZZCoder ha alcuni buoni punti. Qui ci sono alcuni più:

  • Tutti i valori datetime deve avere un fuso orario associato. È necessario definire che cosa significa se un datetime non ne ha uno (per esempio, in alcuni casi, vorrà dire GMT + 0; in altri è perché il codice è nel bel mezzo di capire che fuori e l'assegnazione di uno).
  • Si avrà probabilmente bisogno di collegare gli eventi con un datetime in una posizione. Ciò significa che si avrà un modo di capire quando fuso orario di un datetime è permesso di cambiare. Questo risolve il problema di compleanno in movimento, ma permette anche un comportamento intelligente in legale inizia o finisce. Tuttavia, fate attenzione delle relazioni intenzionali:. La creazione di un incontro per diverse persone in diversi fusi orari deve fare riferimento una voce canonica, non copiare datetimes e localizzare li
  • Non fare calcoli da soli:. Sempre sempre sempre chiedere le funzioni di libreria di fare calcoli datetime

avevo avuto un po 'di fortuna con questo utilizzando alcuni Javascript per avere il client di informarci del loro fuso orario. Se mi ricordo che ha coinvolto il calcolo del tempo corrente sulla macchina dell'utente in tempo locale e poi confrontando quella contro Zulu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top