2010-05-10 4 views

Répondre

1

Votre serveur est-il situé en Californie? Si oui, alors DateTime.Now retournera l'heure actuelle dans le fuseau horaire actuel. Si ce n'est pas le cas, vous pouvez coder en dur le décalage depuis l'UTC de Californie et utiliser DateTime.UtcNow.AddHours(offset) ou utiliser une base de données telle que tz database qui vous aidera à ajuster automatiquement l'heure d'été et ainsi de suite.

Il y a aussi la classe TimeZoneInfo, introduite dans .NET 3.5 qui vous permet d'énumérer les informations de fuseau horaire installées dans Windows. Vous devriez être capable de le calculer aussi.

2
TimeZoneInfo pacificZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); 
DateTime pacificTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, pacificZone); 

L'avantage est que cela ne dépend pas du fuseau horaire auquel le serveur est actuellement configuré.

+0

N'y at-il pas un moyen qui renvoie un DateTimeOffset? Ce serait mieux IMO. Ma solution (supprimée) ne fonctionne pas :-( – dtb

+0

@dtb, pourquoi avons-nous besoin d'obtenir explicitement le décalage? Il a dit qu'il veut sortir le temps réel –

+0

+1 .Bon.TempsZoneInfo est nouveau dans .NET 3.5. – Steven

Questions connexes