【发布时间】: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); } }