2017-08-23 1 views
0

Je souhaite construire un DateTime qui ressemble à ci-dessous dans Visual Basics:datetime de sortie VB.net avec fuseau horaire et le décalage

Wed Aug 23 2017 10:00:00 GMT+0530

Quelqu'un peut-il s'il vous plaît suggérer comment construire une information DateTime où info fuseau horaire pourrait aussi être montré comme ci-dessus?

+0

Voulez-vous quelque chose où vous pouvez spécifier le fuseau horaire (le "Construire" dans le titre), ou voulez-vous simplement * afficher * le fuseau horaire avec le datetime? –

Répondre

0

Vous pouvez faire quelque chose comme ci-dessous ...

Dim dt as DateTime = DateTime.UtcNow 
Dim output as String = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt ""GMT"" zzz") 
Console.WriteLine(output) 'Outputs Aug 23, 2017 11:16:29 AM GMT +01:00 

Voir Custom Date and Time Format Strings pour plus d'informations.

0

A DateTime a une Kind qui est l'un des DateTimeKind.Local, DateTimeKind.Utc ou DateTimeKind.Unspecified, de sorte que même si elle a des informations de fuseau horaire, il est trop limité pour spécifier un autre décalage.

A DateTimeOffset peut contenir d'autres compensations, il peut mieux convenir à vos besoins:

Module Module1 

    Sub Main() 
     Dim hereAndNow = DateTime.Now 
     Dim utc = DateTime.UtcNow 
     Dim noTzi = Date.SpecifyKind(utc, DateTimeKind.Unspecified) 

     Dim inIndia As New DateTimeOffset(noTzi, TimeSpan.FromHours(5.5)) 

     Console.WriteLine(hereAndNow.ToString("yyyy-MM-dd HH:mm:ss K")) 
     Console.WriteLine(utc.ToString("yyyy-MM-dd HH:mm:ss K")) 
     Console.WriteLine(inIndia.ToString("yyyy-MM-dd HH:mm:ss 'GMT' K")) 

     Console.ReadLine() 

    End Sub 

End Module 

Sorties:

2017-08-23 11:36:55 +01: 00
23/08/2017 10:36:55 Z
2017-08-23 10:36:55 GMT +05: 30

J'ai dû définir le type de la variable DateTime utc à DateTimeKind.Unspecified pour pouvoir l'utiliser dans le constructeur DateTimeOffset.

Vous devez utiliser le K custom format specifier pour affichant les informations de fuseau horaire.