En 2013, le Royaume-Uni n'entraînera pas l'heure d'épargne du jour jusqu'au 31 mars.
toujours, Pourquoi est-ce? Dois-je dire cette méthode que l'heure d'économie de jour n'est pas active? P> TimezoneInfo.convertimetoutc code> soustrait une heure lorsque j'essaie de convertir un temps donné en UTC. Temps. P>
var now = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);
var convertedTime = TimeZoneInfo.ConvertTimeToUtc(now, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard time"));
Console.WriteLine(convertedTime); // subtracts one hour, even though England time and GMT should be equal
3 Réponses :
[REMARQUE: Cette réponse suppose que l'ordinateur exécutant le code est dans le fuseau horaire GMT]
C'est parce que "W. Europe Standard Time" n'est pas le même fusionné que UTC selon .net ( même si Il devrait être em>). c'est très étrange et semble être un bug dans les bibliothèques .net. strong> p> En raison de cela, vous l'avez dit par inadvertance de convertir un temps en UTC et de le transmettre un UTC (c.-à-d. Temps GMT), mais a ensuite dit que le moment est dans "W. Europe Standard Time", qui est une heure devant UTC. P> Si naturellement, le temps résultant dans une heure différente. étape par étape: p> Ceci définit maintenant code> à l'heure dans UTC. P> TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard time")
Si vous regardez l'un des convertisseurs en ligne et que vous essayez de convertir une heure du Royaume-Uni en UTC, vous verrez qu'elles sont identiques et qu'elles seront jusqu'au 31 mars. Est-ce que je manque quelque chose?
Êtes-vous au Royaume-Uni? Si vous êtes, votre code entraînera le temps d'être à l'heure.
"C'est parce que" W. Europe Standard Time "n'est pas le même fusionnement que UTC." Vraiment? Avez-vous une référence pour cela? Parce que Wikipedia n'est pas d'accord avec vous .
@svick: Oui. Je suis d'accord avec toi.
@svick mais mon registre dit le ci-contre . bizarre i> ..
@Sonergonul: intéressant. Cela pourrait avoir quelque chose à voir avec le bug.
Faites ceci: var Timezone = TimeZoneInfo.FindsystemTezoneByID ("W. EUROPE STANDARD TIME") CODE> puis regardez-le sous le débogueur.
TIMZONE.BASEUTECOFFSET code> a la valeur
01:00:00 code>. Que cela soit correct ou mal est une question différente, mais c'est là que vient la différence. Notez également que le nom "magiquement" a changé en "W. Europe Daylight Time" - ce qui n'est pas transmis! Donc, les regards semblent suspicieusement une sorte de bug de bibliothèque.
@Matthewwatson Vous ne regardez-vous pas DayLightName code> Propriété? Parce que je ne vois pas ce que vous suggérez.
@Matthewwatson J'ai regardé Timezone.baseutcoffset code> sur le débogueur et je vois
00:00:00 code>. Quelque chose vraiment bizarre .. je soupçonne aussi un bug aussi ..
Il semble donc que Windows "W. L'EUROPE STANDARD TIME "n'est pas la même chose que" l'heure de l'Europe occidentale ". C'est vraiment déroutant.
@svick Yeah, sous Windows Registry W. EUROPE STANDARD TIME CODE> MATCHES AVEC
Temps d'été de l'Europe occidentale Code> sur Wikipedia a> pas avec
temps européen occidental code>
Vous utilisez simplement le mauvais fuseau horaire. L'Angleterre est dans la zone "GMT Standard Time". P>
La zone "W. Europe Standard Time" est pour l'Europe continentale, Amsterdam, Berlin, Berne, Rome, Stockholm, Vienne, UTC + 01: 00. P>
Êtes-vous sûr de cela? Ce site Web dit: "Le Royaume-Uni est dans le fuseau horaire européen de l'Ouest." wwp.greenwichmeantime.com/time-zone/europe/uk
Voici un autre qui dit exactement ce que je dis: Wet = GMT, mais lorsque DST est en vigueur, WET = GMT + 1. wwp.greenwichmeantime.co.uk/time-zone/europe/uk/time
Oui, je suis sûr. Vous devrez utiliser des noms Windows Timezone, pas n'importe quelle page Web l'appelle.
@Hanspassant: Wikipedia revendique également WET = UTC, mais .NET donne une valeur de UTC + 1 pour humide.
Eh bien, les deux que nous avons sont du temps de l'Europe occidentale et l'été de l'Europe occidentale / jour de la lumière du jour n'est-ce pas? Il s'agissait peut-être qu'en entrant l'heure normale de l'Europe occidentale, vous correspondez automatiquement au plus proche, qui serait l'été ou la lumière du jour, que la norme soit répertoriée comme un fuseau horaire. P>
Incidemment, l'heure d'été britannique est la même chose que la lumière de la journée de l'Europe occidentale / l'heure d'été. Et Greenwich Mimetime correspond à l'heure de l'Europe occidentale - même fuseau horaire, mais la BST a commencé à être traité historiquement plus tôt, avant de faire correspondre les règles de l'UE en 2002. Effectivement, même nom système différent. P>
Cela a déjà été répondu et la réponse marquée est correcte. Ils utilisaient simplement le mauvais numéro de fuseau horaire Windows.
w. Standard Europe CODE> TimeZone n'est pas
UTC + 01.00 CODE>?
Vous devriez vraiment essayer Nodatime noda-time.blogspot.com par @jonskeet. Il devrait être inclus dans .NET comme une nouvelle API DateTime.
@Soner Gonul: Non, ce n'est pas. Pas quand ce n'est pas le temps d'économie de jour.
Ce fuseau horaire est i> UTC + 1 en ce moment maintenant, cependant.
@Matthew Watson: C'est +0000 UTC Selon ce site Web: WorldTimeserver.com/mobile/mobile_time_in_gb.aspx
Dupliqué possible de Différence entre UTC et GMT Time Standard dans .NET < / a>