2012-12-26 10 views
5

nella progettazione di applicazioni web in particolare con Asp.net MVC4 C#, una volta che io usoIn quale momento si trova DateTime.Now nelle applicazioni Web?

private DateTime currentDateTime = DateTime.Now; 

da qualche parte nel mio codice e salvare CurrentDateTime in una banca dati; e quindi, distribuisco la mia applicazione nel web,

Quale sarà il valore di currentDateTime?

a. DateTime del browser/computer che ha aperto la mia applicazione (problema fuso orario)

b. DateTime del server in cui ho distribuito la mia applicazione (tutti i valori sono in un fuso orario)

Scusate, ma sto solo iniziando in applicazioni web, quindi questo mi confonde. Spero che tu possa chiarirmi. Grazie.

risposta

7

Il valore sarà l'ora locale sul server.

Tuttavia, consigliamo vivamente di utilizzare l'UTC (Universal Coordinated Time) ad esempio, DateTime.UtcNow, rende molto più semplice ragionare sui tempi di data e significa che sarà possibile ospitare la propria applicazione in qualsiasi parte del mondo senza conseguenze negative.

+0

Consiglio eccellente. Tieni presente che questo richiederà ancora informazioni corrette su fuso orario e fuso orario sui tuoi server. (Questo deriva dalla voce dell'esperienza. Ho dovuto eseguire il debug di un problema lato server solo per scoprire in seguito che stavamo inseguendo il problema sbagliato, perché il tempo registrato per vari eventi era errato). –

6

Il codice ASP.Net è in esecuzione sul server, quindi sarà l'ora del server.

2

Sarà l'ora sul server.

4

La risposta corretta è:

b. DateTime del server in cui ho distribuito la mia applicazione, poiché è lì che il codice è in esecuzione.

C'è un'altra proprietà DateTime, DateTime.UtcNow che ottiene sempre l'ora UTC.
Si consiglia di utilizzare quello nell'applicazione e nel database (getutcdate() ins in sql server, ad esempio), in quanto evita tutti i tipi di problemi di sincronicità.

Se è necessario mostrare la data al client, è sufficiente compensare l'ora salvata per il fuso orario del client e si è d'oro.

4

Sarà l'ora sul server, poiché è lì che il codice è in esecuzione.

Potrebbe essere preferibile utilizzare DateTime.UtcNow, in quanto ciò riduce i problemi relativi al fuso orario. È possibile convertire facilmente l'ora locale sul client o sul server quando si visualizza o si valuta l'ora.

Problemi correlati