2016-11-29 5 views
0

Wenn wir einen Suchindex erstellen und ein Feld als DateTime definieren, lautet der Typ Edm.DateTimeOffset. Und der Wert sollte so sein: yyyy-MM-ddTHH:mm:ss.fffZ oder yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm.So konvertieren Sie DateTimeOffset zurück in DateTime

Jetzt habe ich eine Datei in der Datenbank vom Typ Datetime, die die wie diese Offset erhalten umgewandelt:

DateTime offset = //get from database the date 

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

Meine Frage: wie kann ich offsetConverted meine ursprüngliche Datetime konvertieren offset?

+1

Was meinst du mit "Datetime-Offset" genau? Eine 'DateTime'-Instanz speichert den UTC-Offset-Teil nicht. Es hat nur Datum und Zeit Teile ("Kind" auch). Wie auch immer, haben Sie jemals versucht, '.DateTime',' .LocalDateTime' oder '.UtcDateTime' Eigenschaften Ihres' offsetConverted' zu verwenden? –

+0

Ich meine: Ich habe eine DateTime in der Datenbank: '2014-09-10 12: 00: 00.000' und ich muss diese DateTime zu einem DateTimeOffset konvertieren, das zu folgendem Ergebnis führt:' 9/10/2014 09:00:00 AM' Was ich also brauche, ist das DateTime zurück in den ursprünglichen Wert zu konvertieren. – user2818430

+0

@ SonerGönül: Ich habe .DateTime verwendet aber funktioniert nicht. Jetzt habe ich versucht .LocalDateTime und Nähte zu arbeiten :) – user2818430

Antwort

2

Verwenden Sie die DateTime-Eigenschaft der DateTimeOffset-Klasse, um DateTimeOffset in eine DateTime zu konvertieren.

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); 
     } 
    } 
} 

Console Ausgabe:

 
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

Sie verwenden DateTime nicht DateTimeOffset als Eingabe? – rolls

Verwandte Themen