Fusi orari semplici

0

Devo inviare e-mail in base a un timestamp. Ma il timestamp deve essere quello che l'utente si aspetta che sia.

Il timestamp viene impostato dall'utente che invia un oggetto.

es

Al da L.A negli Stati Uniti salva un oggetto con un timestamp del 30/03/2015 alle 10:00:00.

Lars di Berlino in Germania salva un oggetto con il timestamp di "15/04/2015 11:00:00 PM".

Il sistema che esamina questi oggetti e in seguito invia email si basa su un fuso orario GMT + 1.

Il mio pensiero, per mantenerlo semplicissimo, consiste nell'aggiungere o sottrarre la differenza nelle ore del fuso orario, in base a dove si trova l'oggetto (fuso orario).

Quindi nell'esempio di Al il sottrarrebbe 9 ore (differenza GMT + 1) ma nell'esempio di Lars il sistema manterrebbe la data, poiché anche la Germania è GMT + 1.

Non sarebbe un'anima giusta?

    
posta frostings 30.03.2015 - 19:44
fonte

2 risposte

3

Il server Web sta salvando i dati, non l'utente, quindi non importa quale sia l'ora dell'utente. L'oggetto deve essere salvato con un timestamp nel formato orario GMT (universale). Salva l'offset fuso orario GMT dell'utente, quindi aggiungi quell'offset al timestamp (che è in UTC) per presentare all'utente, la sua ora locale.

Ad esempio, dato che sono in CA, il mio UTCTimeZoneOffset sarà -8. Aggiungi da -8 a 21: 00UTC e per me è 13: 00PST.

    
risposta data 31.03.2015 - 17:37
fonte
2

Non così tanto. Può essere.

Il problema è che se Al di Los Angeles segna qualcosa con 1/1/2015 10AM e 7/1/2015 10AM, quelli saranno diversi offset da GMT.

"Ciò che l'utente si aspetta che sia" può diventare davvero rischioso dato il nostro modo troppo complesso di misurare i tempi. Dove possibile, utilizza UTC (che può essere diverso o meno dal GMT in base alle tue esigenze di precisione) e traduci l'ora locale il più vicino possibile alla visualizzazione all'utente.

    
risposta data 30.03.2015 - 19:54
fonte

Leggi altre domande sui tag