2013-03-25 86 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以供将来参考。