转换无效的日期时间

时间:2013-03-25 09:33:51

标签: c# timezone

我需要将DateTime从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");

3 个答案:

答案 0 :(得分:1)

您使用的是哪种框架?

ToUniversalTime()不是正确的选择吗?

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

答案 1 :(得分:0)

您应该指定日期时间的DateTimeKind。在执行验证之前添加它:

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

答案 2 :(得分: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以供将来参考。