Question

Je suis actuellement en heure d'été britannique qui est UTC 1 heure. Je confirme mon PC est correct avec le code suivant et il retourne vrai.

System.TimeZone.CurrentTimeZone.IsDaylightSavingTime(Date.Now)

Ma question est alors pourquoi le formatter UTC fonctionne pas comme j'attendre:

DateTime.Now.ToString("u")

Il renvoie la date actuelle du système exact comme ci-dessous au format UTC comme prévu, mais avec le Z ( Zulu le temps ) à la fin non +01: 00

i.e..

2009-05-27 14:21:22Z

pas

2009-05-27 14:21:22+01:00

est cette fonctionnalité correcte?

Était-ce utile?

La solution

MSDN stipule ce qui suit:

  

Représente une chaîne de date personnalisée et le format de temps défini par la propriété DateTimeFormatInfo.UniversalSortableDateTimePattern. Cette tendance reflète une norme définie et la propriété est en lecture seule. Par conséquent, il est toujours le même, quelle que soit la culture utilisée ou le fournisseur de format fourni. La chaîne de format personnalisé est "yyyy '-' MM '-' dd HH ':' mm ':' ss'Z '".

     

Lorsque ce spécificateur de format standard est utilisé, la mise en forme ou opération utilise toujours l'analyse syntaxique de la culture invariant.

     

Mise en forme ne convertit pas le fuseau horaire de la date et de l'objet du temps. Par conséquent, l'application doit convertir une date et l'heure à temps universel coordonné (UTC) avant d'utiliser ce spécificateur de format.

Vous devez utiliser le code suivant pour convertir votre date actuelle à UTC avant de le formater:

DateTime.UtcNow.ToString("u")

ou

DateTime.Now.ToUniversalTime().ToString("u")

Pour afficher dans le format que vous attendiez (à savoir 2009-05-27 14: 21: 22 + 01: 00), vous devez utiliser un format de date personnalisé:

DateTime.Now.ToString("yyyy-MM-dd HH:mm:sszzz");

Autres conseils

"u" est le modèle de date / heure triables Universal, pas au format UTC; Pour citer le :

  

Représente une chaîne de date personnalisée et le format de temps défini par le DateTimeFormatInfo .. ::. Propriété UniversalSortableDateTimePattern. Cette tendance reflète une norme définie et la propriété est en lecture seule. Par conséquent, il est toujours le même, quelle que soit la culture utilisée ou le fournisseur de format fourni. La chaîne de format personnalisé est "yyyy '-' MM '-' dd HH ':' mm ':' ss'Z '".

     

Lorsque ce spécificateur de format standard est utilisé, la mise en forme ou opération utilise toujours l'analyse syntaxique de la culture invariant.

     

Le formatage ne convertit pas le fuseau horaire de la date et de l'objet du temps. Par conséquent, l'application doit convertir une date et l'heure à temps universel coordonné (UTC) avant d'utiliser ce spécificateur de format.

Vous devez utiliser DateTime.Now.ToUniversalTime (). ToString ( "u").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top