2010-01-25 3 views
1

Y at-il une fonction dans C# qui renvoie la date & heure à laquelle les valeurs GMT sont données (-12 à -1 et 1 à 12)?Y at-il une fonction dans C# qui renvoie la date et l'heure lorsque les valeurs GMT sont données (de -12 à -1 et de 1 à 12)?

EDIT:

je un DropDownListBox qui contient toutes les valeurs GMT .. Maintenant, je veux afficher la date & heure d'une valeur GMT sélectionnée ....

+0

Pas d'amour pour les îles Rawaki? –

+1

Vous pourriez donner un peu plus de détails sur ce que vous essayez d'accomplir. Vous pourriez faire ce dont vous avez besoin avec une structure 'DateTimeOffset': http://msdn.microsoft.com/fr-fr/library/system.datetimeoffset.aspx –

+0

Si vous n'avez pas +13 ou +14, vous n'avez pas * tous * les fuseaux horaires ici. Sans parler de toutes les nations avec des différences d'une demi-heure. –

Répondre

2

GMT est le temps moyen de Greenwich, non? Ou mieux connu comme UTC? Je pense que vous faites référence à UTC offset. En d'autres termes, compte tenu d'un décalage par rapport à l'heure GMT, quelle est l'heure à cet endroit?

Je pense qu'il est

DateTime.SpecifyKind(DateTime.UtcNow + new Timespan(offsetHours,0,0), 
        DateTimeKind.LocalTime); 

sauf, ce n'est pas vraiment vrai, parce que le « genre » de cette DateTime sera locale, ce qui signifie où l'ordinateur est en ce moment. Ce que vous voulez vraiment, c'est un DateTimeKind avec un fuseau horaire particulier.

Addendum

Voir aussi la classe TzTimeZone qui est inclus dans le projet de DomainePublic sur CodePlex: http://www.codeplex.com/publicdomain.

Le System.TimeZone comme inclus dans .NET 2.0 ne permet pas d'instancier un objet TimeZone demande donné un nom raccourci de le fuseau horaire, ou un décalage UTC. Au lieu de cela, la classe System.TimeZone "connaît" le fuseau horaire local mais ne fait pas grand-chose d'autre. Cela rend difficile de prendre un temps arbitraire (par exemple, 15h13, 4 octobre 2006, à Los Angeles) et le formater pour l'afficher dans un autre fuseau horaire arbitraire (disons, Paris).

La classe TzTimeZone fournit un modèle pour un certain nombre de fuseaux horaires différents, y compris leurs décalages d'UTC et les règles qu'ils appliquent pour l'heure d'été .

Avec ce nouvel ensemble de classes, il est possible d'instancier un fuseau horaire à partir d'un ensemble bien connu d'instances nommées. Il est également facile de formater une valeur de temps de w.r.t. n'importe quel fuseau horaire arbitraire (nommé). En particulier, il est facile de prendre un temps comme (03h13 le 4 octobre 2006, à Los Angeles) et le le format pour l'affichage à Paris.

0

Vous pouvez utiliser quelque chose comme:

var d = System.DateTime.Now().ToUniversalTime().AddHours(5) 
+0

qui ne fonctionnera pas, car il fournit un DateTime qui a DateTimeKind.Utc. – Cheeso

0

La réponse de Paulo devrait fonctionner correctement, mais la struct DateTimeOffset dans .NET 3.5 semble construite pour votre question.

Questions connexes