首页 > 解决方案 > 将带有 utc-datetime 的字符串转换为 datetime-Ojbect

问题描述

首先,我是 C# 新手。

我必须转换一个string喜欢

  "Fri, 30 Jul 2021 11:57:58 (UTC)" 

变成一个DateTime. 我尝试了几种格式字符串(如"ddd, dd MMM yyyy HH:mm:ss", "r", "R")。但我总是收到错误消息

字符串未被识别为有效的日期时间。

这是我的最后一个代码:

CultureInfo enUS = new CultureInfo("en-US");
string timeStampFormat = "ddd, dd MMM yyyy HH:mm:ss";
DateTime myDateTime;

myDateTime = DateTime.ParseExact(
  stringToFormat, 
  timeStampFormat, 
  enUS, 
  DateTimeStyles.AssumeUniversal);

谢谢你的支持。

最好的问候安德烈亚斯##标题##

标签: c#datetimedatetime-formatutc

解决方案


(UTC)是导致字符串不被识别为时间戳的原因。您可以(UTC)通过删除它来解决这个问题,我在这里提供了一种方法来完成此操作。

        string stringToFormat = "Fri, 30 Jul 2021 11:57:58 (UTC)";

        string[] SubString = stringToFormat.Split('(');
        stringToFormat = SubString[0].Trim();

        string timeStampFormat = "ddd, dd MMM yyyy HH:mm:ss";
        DateTime mydateTime = DateTime.ParseExact(stringToFormat, timeStampFormat, CultureInfo.GetCultureInfo("en-US"), DateTimeStyles.AssumeUniversal);
        

或者将 替换为(UTC)与 UTC 的偏移量,在这种情况下为 0,并添加(z)到 timeStampFormat。

        string stringToFormat = "Fri, 30 Jul 2021 11:57:58 (UTC)";
        stringToFormat = stringToFormat.Replace("(UTC)", "(-0)");

        string timeStampFormat = "ddd, dd MMM yyyy HH:mm:ss (z)";
        DateTime mydateTime = DateTime.ParseExact(stringToFormat, timeStampFormat, CultureInfo.GetCultureInfo("en-US"), DateTimeStyles.AssumeUniversal);
        

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings


推荐阅读