2016-11-29 82 views
0

當我們創建一個搜索索引並且我們將一個字段定義爲DateTime時,類型爲Edm.DateTimeOffset。值應該是這樣的:yyyy-MM-ddTHH:mm:ss.fffZyyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm如何將DateTimeOffset轉換回DateTime

現在,我有我的DateTime類型的數據庫中的文件,該文件得到的轉換偏移這樣的:

DateTime offset = //get from database the date 

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

我的問題:我怎麼可以轉換offsetConverted我的原單日期時間offset

+1

你說的意思是 「日期時間偏移」 到底是什麼? 'DateTime'實例不會存儲UTC偏移量部分。它只有日期和時間部分('Kind')。無論如何,你有沒有嘗試過使用'offsetConverted'的'.DateTime','.LocalDateTime'或'.UtcDateTime'屬性? –

+0

我的意思是:我在數據庫中有一個DateTime:'2014-09-10 12:00:00.000',我必須將此DateTime轉換爲DateTimeOffset,結果爲:'9/10/2014 09:00:00 AM'所以我需要的是將日期時間轉換回原始值。 – user2818430

+0

@SonerGönül:我使用.DateTime,但不起作用。現在我試了.LocalDateTime和接縫工作:) – user2818430

回答

2

使用DateTimeOffset類的DateTime屬性將DateTimeOffset轉換爲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); 
     } 
    } 
} 

控制檯輸出:

 
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

您使用DateTime而不是DateTimeOffset作爲輸入? – rolls

相關問題