此DateTime
格式的名称是什么:
Tue Apr 01 2014 00:00:00 GMT+0100 (GMT Daylight Time)
无论如何,我可以在代码中检测到这种格式吗?
我问的原因是我有一个带DateTime
参数的函数,它有不同的格式,我想检测格式类型或名称;所以我可以根据dd/MM/yyyy hh:mm:ss
的简单格式转换它们。
我得到的另一种格式是:2014-03-31T23:00:00.000Z
。
非常感谢。
修改
我写了这个函数,以便从Tue Apr 01 2014 00:00:00 GMT+0100
(GMT日光时间)转换为dd/MM/yyyy hh:mm:ss
。当输入类型为2014-03-31T23:00:00.000Z
时,此函数将失败。
我想知道怎么可能识别出来的参数类型并进行相应的转换?
public static DateTime ConvertDateObjectToDateTime(string dateToConvert)
{
var value = new DateTime();
if (!string.IsNullOrEmpty(dateToConvert))
{
int gmtIndex = dateToConvert.IndexOf("G", System.StringComparison.Ordinal);
string newDate = dateToConvert.Substring(0, gmtIndex).Trim();
value = DateTime.ParseExact(newDate, "ddd MMM dd yyyy HH:mm:ss", CultureInfo.InvariantCulture);
return value;
}
return value;
}
答案 0 :(得分:2)
第二个肯定是UTC,但是,第一个可能是UTC +偏移量,或者它可能是本地+偏移量(它看起来像后者,我检查的越多)。您在军械库中用于解析特定日期的最佳工具是ParseExact方法。
根据您的编辑,我担心您忽略了时区信息。您现在假设日期已经是UTC(可能不是),只是解析/处理它...
但是,要回答您的特定问题
我想知道怎么可能识别出来的参数类型并进行相应的转换?
您实际上并不需要这样做,ParseExact
有一个overload,允许您指定多种格式
value = DateTime.ParseExact(newDate,
new[] { "ddd MMM dd yyyy HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss.fff'Z'" },
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);