7
votes

.NET Greenwich World Time

Y a-t-il un moyen de recevoir la date du 1er janvier 1970 Greenwich World Time dans une date d'heure?

Si je spécifie simplement une nouvelle date (1970, 1, 1), je l'obtiendrai avec mon fuseau horaire actuel ..


0 commentaires

3 Réponses :


2
votes

GMT est, à toutes fins pratiques, identique à celle de l'UTC.

Ceci signifie que vous pouvez simplement utiliser l'un des DateTime < / Code> Constructeurs qui prend un DateTimekind paramètre, le réglage sur denttimekind.utc . xxx


3 commentaires

UTC n'est pas tout à fait GMT - GMT Obeys DLT (Économies de la lumière du jour), bien qu'elle soit une grande partie du temps.


UTC et GMT ne diffèrent que par des fractions d'une seconde. GMT n'a pas de temps d'économie de jour.


@Noldorin: GMT et UTC sont les mêmes à toutes fins utiles. GMT ne fait pas obéir à l'épargne du jour: au Royaume-Uni, il est actuellement BST qui est GMT + 1. en.wikipedia.org/wiki/greenwich_mean_time



3
votes

Consultez le DateTimeOffset structure

EDIT: En réalité, après la lecture supplémentaire sur DateTimeOffset , ce n'est peut-être pas la solution la plus adéquate pour ce que vous essayez de faire ... i Pensez que c'est la réponse la plus directe à votre question: xxx


4 commentaires

L'utilisation de DateTimeOffset serait une solution très intéressante! Pourriez-vous nous donner un exemple de code pour montrer comment vous avez l'intention de l'utiliser pour trouver l'heure du GMT? Allez-vous trouver le décalage entre DateTime.now et DateTime.utcnow, puis appliquez le décalage au 1er janvier 1970 dans votre propre fuseau horaire? Ou existe-t-il une approche plus directe? Très intéressant!


En outre, cette approche pourrait-elle être expliquée (par mon interprétation de votre réponse comme expliquée dans le commentaire ci-dessus) fonctionner pour chaque fuseau horaire que vous souhaitez convertir? En d'autres termes, y a-t-il quelque chose de similaire à DateTime.utcnow disponible pour d'autres fuseaux fusionnées? Sinon, je ne pense pas que ce serait une solution universelle viable.


@THOMAS: Je ne suis pas d'accord pour dire que c'est "la réponse la plus directe" à la question: Vous construisez la DateTime , puis appelant la méthode SpécifiedKindkind . Le même résultat peut être obtenu simplement en appelant un constructeur différent, sans avoir besoin d'appel de méthode supplémentaire. (Voir ma réponse pour plus de détails.)


droite, ce n'est pas vraiment le "plus direct" ... Cependant, je le trouve plus compréhensible que d'appeler le constructeur avec 7 arguments



6
votes

GMT est égal à uc (temps universel coordonné), plus ou moins (à moins que vous ne traitez de fractions de secondes, il n'y a pas de différence). DateTimekind , une énumération qui vous permet de choisir Que ce soit pour afficher le temps dans votre fuseau horaire local ou dans l'UTC, est intégré au constructeur DateTime . En utilisant cela, nous pouvons atteindre l'équivalent de GMT.

Le constructeur Nous cherchons à utiliser est ce qui suit: xxx

ou (en un, il y a un argument millisecond, dans l'autre, il n'y a pas): xxx

pour obtenir une date de date pour 1er janvier, 1970 dans UTC , c'est ce que nous pouvons utiliser: xxx

ou : xxx

note : le contenu de l'énumération DateTimekind est ci-dessous:

  • non spécifié (peut être soit une heure locale ou UTC)
  • UTC
  • local

    mise à jour : Thomas levesque proposé une solution très créative dans sa réponse, mais je ne sais pas si c'est la méthode la plus directe et si c'est une méthode viable pouvant être utilisée pour tout fuseau horaire. Ce que je pense qu'il dise qu'il dise, c'est que vous pouvez calculer la DateTimeOffsetssetssetssetssetssetssetsset de DateTime.now et DateTime.utcnow et appliquez le décalage calculé au 1er janvier. , 1970 dans votre propre fuseau horaire, ce qui vous en donne dans l'heure UTC / GMT. Je ne suis pas sûr qu'il existe des méthodes simples pour calculer des décalages vers d'autres fuseaux horaires , puis cela devient un peu redondant à la question.

    Mise à jour # 2 < / Fort>: J'ai ajouté un autre constructeur DateTime qui accomplit la même chose, mais manque d'argument millisecond. Ils sont interchangeables.


2 commentaires

GMT ne doit pas obéir à l'heure d'économie de jour. en.wikipedia.org/wiki/greenwich_mean_time


Yup désolé, c'était une erreur. Fixé.