【问题标题】:Converting Invalid DateTime转换无效的日期时间
【发布时间】:2013-03-25 09:33:51
【问题描述】:

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

【问题讨论】:

  • DateTime 的结果值是多少?用于转换的文化(日期不明确 - 可能是 3 月 10 日或 10 月 3 日,具体取决于文化)。
  • 真的不清楚你想要什么结果。如果给定的本地日期/时间由于被跳过而无效,你想发生什么? (请注意,Noda Time 让您更容易说出您想要发生的事情;)
  • @Arshad:不,这是将 UTC 转换为本地,在夏令时转换方面没有相同的问题。
  • GetUniversalFormatDateTime 不是DateTime 实例的方法。你是如何编译上面的代码的?
  • GetUniversalFormatDateTime 是我的方法public static class DateTimeExtensions { public static DateTime GetUniversalFormatDateTime(this DateTime dateTime) { return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc); } }

标签: c# timezone


【解决方案1】:

你用的是什么框架?

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

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

【讨论】:

    【解决方案2】:

    我想这就是你想要达到的目标:

    _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 以供将来参考。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 2014-10-13
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        相关资源
        最近更新 更多