C# 解析UTC日期时间
我试图将2011年11月23日23:59:59 UTC+0800解析为c#datetime对象,但尝试标准的datetime解析方法,甚至datetime精确解析,我得到的日期无效C# 解析UTC日期时间,c#,parsing,datetime,C#,Parsing,Datetime,我试图将2011年11月23日23:59:59 UTC+0800解析为c#datetime对象,但尝试标准的datetime解析方法,甚至datetime精确解析,我得到的日期无效 有什么想法吗?我想你需要使用ParseExact 正如詹姆斯所写,你可以试试看 var dt = DateTime.ParseExact( "11/23/2011 23:59:59 UTC +0800", "MM/dd/yyyy HH:mm:ss 'UTC' K",
有什么想法吗?我想你需要使用ParseExact
正如詹姆斯所写,你可以试试看
var dt = DateTime.ParseExact(
"11/23/2011 23:59:59 UTC +0800",
"MM/dd/yyyy HH:mm:ss 'UTC' K",
CultureInfo.InvariantCulture);
您将获得一个“本地”时间的日期。我建议您解析为
DateTimeOffset
而不是DateTime
,格式为字符串:
using System;
using System.Globalization;
class Test
{
static void Main(string[] args)
{
string text = "11/23/2011 23:59:59 UTC +0800";
string pattern = "MM/dd/yyyy HH:mm:ss 'UTC' zzz";
DateTimeOffset dto = DateTimeOffset.ParseExact
(text, pattern, CultureInfo.InvariantCulture);
Console.WriteLine(dto);
}
}
然后,如果需要,可以将其转换为UTC中的日期时间
值,但没有“偏移量为8小时的日期时间
之类的东西”日期时间被视为通用、本地或未指定,无法存储特定偏移量
DateTime
是一个错误,可能会给不小心的开发人员带来问题。Msdn格式设置:
对于扩展方法:
public static DateTime getDateFromFormat(this string _date, string _parsePattern)
{
DateTimeOffset dto = DateTimeOffset.ParseExact(_date, _parsePattern, CultureInfo.InvariantCulture);
return Convert.ToDateTime(dto.ToLocalTime());
}
对于测试:您想要什么时间?您是否居住在UTC+08的国家/地区?您希望您的日期时间是UTC时间(所以11月24日07:59)还是什么?输入它运行的机器的本地时间
public static DateTime getDateFromFormat(this string _date, string _parsePattern)
{
DateTimeOffset dto = DateTimeOffset.ParseExact(_date, _parsePattern, CultureInfo.InvariantCulture);
return Convert.ToDateTime(dto.ToLocalTime());
}