2016-11-29 2 views
0

Lorsque nous créons un index de recherche et que nous définissons un champ en tant que DateTime le type est Edm.DateTimeOffset. Et la valeur devrait être comme ceci: yyyy-MM-ddTHH:mm:ss.fffZ ou yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm.Comment faire pour convertir DateTimeOffset en DateTime

Maintenant, je dispose d'un fichier dans ma base de données de type DateTime qui se reconverti à décalage comme ceci:

DateTime offset = //get from database the date 

TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time"); 
DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset)); 

Ma question: comment puis-je convertir offsetConverted à mon orginal DateTime offset?

+1

Que voulez-vous dire par "DateTime décalage" exactement? Une instance 'DateTime' ne mémorise pas de partie de décalage UTC. Il a juste des parties date et heure ('Kind' aussi). De toute façon, avez-vous déjà essayé d'utiliser les propriétés '.DateTime',' .LocalDateTime' ou '.UtcDateTime' de votre' offsetConverted'? –

+0

Je veux dire: J'ai un DateTime dans la base de données: '2014-09-10 12: 00: 00.000' et je dois convertir ce DateTime en un DateTimeOffset qui se traduit par:' 9/10/2014 09:00:00 AM' donc ce dont j'ai besoin est de convertir le DateTime en valeur d'origine. – user2818430

+0

@ SonerGönül: J'ai utilisé .DateTime mais ne fonctionne pas. Maintenant, j'ai essayé .LocalDateTime et les coutures au travail :) – user2818430

Répondre

2

Utilisez la propriété DateTime de la classe DateTimeOffset pour convertir le DateTimeOffset en un DateTime.

using System; 

namespace StackOverflowProblem1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // input comes from user in form yyyyddMMTHHmmss 
      DateTime offset = new DateTime(2016, 10, 12, 12, 22, 0); 
      TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time"); 
      DateTimeOffset offsetConverted = new DateTimeOffset(offset, zone.GetUtcOffset(offset)); 
      DateTime roundTripOffset = offsetConverted.DateTime; 
      Console.WriteLine("Input {0}, as DateTimeOffset {1},", 
        offset.ToString(), 
        offsetConverted.ToString()); 
      Console.WriteLine("after round trip {0}, Kind {1}.", 
       roundTripOffset, 
       roundTripOffset.Kind); 
     } 
    } 
} 

Sortie de la console:

 
Input 10/12/2016 12:22:00, as DateTimeOffset 10/12/2016 12:22:00 +03:00, 
after round trip 10/12/2016 12:22:00, Kind Unspecified. 
+0

Vous utilisez DateTime pas DateTimeOffset comme votre entrée? – rolls