如何将此UTC datetime字符串转换为datetime对象c#
我一直在尝试将这个字符串转换为C中的DateTime对象# 2019-09-23T08:34:00UTC+1 我尝试过使用DateTime.Parse,但它引发了一个异常 “字符串未被识别为有效的日期时间。”如何将此UTC datetime字符串转换为datetime对象c#,c#,datetime,utc,C#,Datetime,Utc,我一直在尝试将这个字符串转换为C中的DateTime对象# 2019-09-23T08:34:00UTC+1 我尝试过使用DateTime.Parse,但它引发了一个异常 “字符串未被识别为有效的日期时间。” 使用TryParseExact将字符串转换为日期时间。下面是将给定格式转换为datetime的示例代码 private static DateTime ParseDate(字符串providedDate){ 日期时间有效期; 字符串[]格式={ “yyyy-MM ddTHH:MM:ss”
使用
TryParseExact
将字符串转换为日期时间。下面是将给定格式转换为datetime的示例代码
private static DateTime ParseDate(字符串providedDate){
日期时间有效期;
字符串[]格式={
“yyyy-MM ddTHH:MM:ss”
};
var dateFormatIsValid=DateTime.TryParseExact(
提供日期、格式、CultureInfo.InvariantCulture、DateTimeStyles.None、out validDate);
return dateFormatIsValid?validDate:DateTime.MinValue;
}
然后,使用此函数转换字符串。我将UTC+1替换为空字符串
static void Main(字符串[]args){
字符串strdatetime=“2019-09-23T08:34:00UTC+1”;
DateTime DateTime=ParseDate(strdatetime.Replace(“UTC+1”和“));
Console.WriteLine(日期时间);
}
很抱歉,你看起来像一个暴力的受害者
这是一种不寻常的格式,这就是为什么在我为您提出解决方案之前,我想说的第一件事是“如果可以的话,首先修复您的输入”
假设你不能修复你的输入,那么你需要考虑一些事情;
UTC
和/或GMT
,则没有自定义的日期和时间格式说明符来解析它们。这就是为什么你需要作为一个李>
+1
部分看起来像一个值。是解析它所需的,但请注意,此格式说明符不建议与DateTime
值一起使用,因为它不反映实例属性的值DateTime
的解决方案,您可以像我建议的那样解析它
var s = "2019-09-23T08:34:00UTC+1";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd'T'HH:mm:ss'UTC'z", CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal, out dt))
{
Console.WriteLine(dt);
}
它将2019-09-23 07:34:00
作为DateTime
提供,并将Utc
作为Kind
属性提供
作为<代码> DeTeMeOffels<代码>的解决方案——因为您的字符串具有UTC偏移值,所以您应该考虑用这个来解析而不是<代码>日期时间<代码> -,作为Matt,您可以使用它来获取数据,如
var s = "2019-09-23T08:34:00UTC+1";
DateTimeOffset dto;
if(DateTimeOffset.TryParseExact(s, "yyyy-MM-dd'T'HH:mm:ss'UTC'z", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dto))
{
Console.WriteLine(dto.DateTime);
}
这将为您提供与.Kind
属性相同的结果DateTime
,但未指定
但是,我再次强烈建议您首先修正输入。这是否回答了您的问题?你能分享代码吗!否这会引发“字符串未被识别为有效日期时间”的异常。在字符串中看到UTC+1部分是不常见的。通常使用ISO8601格式…该字符串来自何处?如果您从字符串中删除UTC,则应感谢奎师那,这是有效的,但不考虑时间中的+1。我如何确保时间准确?原因是这是一个跟踪应用程序,我正在解析交付的ETA,所以UTA+1是important@SeanDavies您可以使用
ParseDate(strdatetime.Replace(“UTC+1”和“”).ToUniversalTime()
将日期转换为UTC时间。或者您可以简单地添加1小时ParseDate(strdatetime.Replace(“UTC+1”),添加小时数(1)
Nice response.:)可能还建议将解析视为DateTimeOffset
而不是DateTime
@MattJohnson-Pint-Ups,完全忽略了这一点。非常感谢你,马特。还添加了该部分(: