2013-03-25 89 views
0

我需要將UTC時間從UTC轉換爲本地時間,爲此我使用TimeZoneInfo IsInValidTime方法轉換爲本地時間之前驗證了日期時間。轉換無效的日期時間

我收到特定日期時間的無效日期時間,如何將此日期轉換爲有效日期時間?

下面是示例代碼:

_timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); 
var dateTime = "10/03/2013 2:12:00 AM"; 
DateTime universalFormatDateTime = Convert.ToDateTime(dateTime).GetUniversalFormatDateTime(); 
if (_timeZoneInfo.IsInvalidTime(universalFormatDateTime)) Console.Write("Invalid DateTime\n"); 
+0

'DateTime'的結果值是多少?轉化中使用的文化是什麼(日期不明確 - 可能是3月10日或10月3日,取決於文化)。 – Oded 2013-03-25 09:35:50

+1

真的不清楚你想要*的結果。如果由於跳過而給定的本地日期/時間無效,您希望發生什麼? (請注意,野田時間可以更容易地說出你想要發生的事情;) – 2013-03-25 09:36:32

+0

@Arshad:不,它將UTC轉換爲本地,這在夏令時轉換中沒有相同的問題。 – 2013-03-25 09:36:58

回答

1

你在使用什麼框架?

是不是ToUniversalTime()正確的選擇?

DateTime universalFormatDateTime = Convert.ToDateTime(dateTime).ToUniversalTime() 
+0

Yay它的工作:) – LokiDil 2013-03-25 10:19:45

0

應指定的日期的時間DateTimeKind。加入此之前執行驗證:

universalFormatDateTime = DateTime 
    .SpecifyKind(universalFormatDateTime,DateTimeKind.Local); 
+0

試過本地也還是不行的:( – LokiDil 2013-03-25 10:13:07

0

我想這是你想達到什麼樣的:

_timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); 
var dateTime = "10/03/2013 2:12:00 AM"; 
DateTime universalFormatDateTime = Convert 
            .ToDateTime(dateTime, new CultureInfo("en-GB")) 
            .ToUniversalTime(); 
if (_timeZoneInfo.IsInvalidTime(universalFormatDateTime)) 
    Console.WriteLine("Invalid DateTime"); 
else 
    Console.WriteLine("Valid DateTime"); 

你可以看一下Convert.ToDateTime articke以供將來參考。