C# 转换无效的日期时间
我需要将日期时间从UTC转换为本地时间,因为我在使用TimeZoneInfo IsInValidTime方法转换为本地时间之前已经验证了日期时间 我得到一个特定日期时间的无效日期时间,如何将此日期转换为有效日期 以下是示例代码:C# 转换无效的日期时间,c#,timezone,C#,Timezone,我需要将日期时间从UTC转换为本地时间,因为我在使用TimeZoneInfo IsInValidTime方法转换为本地时间之前已经验证了日期时间 我得到一个特定日期时间的无效日期时间,如何将此日期转换为有效日期 以下是示例代码: _timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); var dateTime = "10/03/2013 2:12:00 AM"; DateTime universa
_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");
您应该指定日期时间的日期时间种类。在执行验证之前添加以下内容:
universalFormatDateTime = DateTime
.SpecifyKind(universalFormatDateTime,DateTimeKind.Local);
我想这就是你想要达到的目标:
_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");
您可以查看文章以备将来参考。您使用的是什么框架 ToUniversalTime()不是正确的选择吗
DateTime universalFormatDateTime = Convert.ToDateTime(dateTime).ToUniversalTime()
DateTime
的结果值是多少?转换使用的文化是什么(日期不明确-可能是3月10日或10月3日,具体取决于文化)。您想要的结果确实不清楚。如果给定的本地日期/时间由于被跳过而无效,您希望发生什么?(请注意,Noda Time使您更容易说出希望发生什么;)@Arshad:不,这是将UTC转换为本地,这与夏令时转换没有相同的问题。GetUniversalFormatDateTime
不是DateTime
实例的方法。如何编译上述代码?GetUniversalFormatDateTime是我的方法<代码>公共静态类DateTimeExtensions{public静态日期时间GetUniversalFormatDateTime(this DateTime DateTime){返回新的日期时间(dateTime.Year,dateTime.Month,dateTime.Day,dateTime.Hour,dateTime.Minute,dateTime.Second,DateTimeKind.Utc);}