【问题标题】:Converting string to DateTime [duplicate]将字符串转换为 DateTime [重复]
【发布时间】:2012-12-15 10:07:24
【问题描述】:

可能重复:
Date time format from string?

有谁知道如何在 C# 中将以下字符串转换为 DateTime 值?

"Thu Nov 15 2012 00:00:00 GMT+0300 (E. Africa Standard Time)"

【问题讨论】:

标签: c# string datetime typeconverter


【解决方案1】:

如果你只有"GMT+0300 (E. Africa Standard Time)"结尾的字符串,你可以试试:

string dateString = "Thu Nov 15 2012 00:00:00 GMT+0300 (E. Africa Standard Time)";
DateTime date = DateTime.ParseExact(dateString, "ddd MMM dd yyyy HH:mm:ss 'GMT+0300 (E. Africa Standard Time)'", System.Globalization.CultureInfo.InvariantCulture);

说明符的含义如下:

  • "ddd" 星期几的缩写名称。
  • “MMM”月份的缩写名称。
  • "dd" 月份中的第几天,从 01 到 31。
  • "yyyy" 四位数的年份。
  • "HH" 小时,使用从 00 到 23 的 24 小时制。
  • "mm" 分钟,从 00 到 59。
  • "ss" 第二个,从 00 到 59。
  • ":" 时间分隔符。
  • "string", 'string' 文字字符串分隔符。

您可以在名为 Custom Date and Time Format Strings 的 MSDN 文章中找到有关不同格式说明符的更多信息

此外,如果您也想解析"GMT+0300 (E. Africa Standard Time)" 部分,我认为您应该实现一种自己解析它们的方法。我认为没有说明符。

【讨论】:

  • 原则上,您的说明符列表还应提及: • ":" 您使用的格式提供程序的TimeSeparator;对于不变的文化,将转换为:。对于某些其他文化,转换为 .
  • @Jeppe:你说得对,我忘了那个。立即添加。
【解决方案2】:

首先,您应该将非洲标准时间文化信息用于您的;

CultureInfo( "af-ZA", false );

但是你的字符串转换为DateTime 真的很复杂。对我来说,完美地转换为DateTime 似乎是不可能的。但是我们可以在您的字符串中进行一些修复。例如,如果您的字符串是这样的; "11/15/2012 00:00:00"你可以这样转换;

using System;
using System.Globalization;

namespace Programs
{
    public class Program
    {      
        public static void Main(string[] args)
        {
            string str = "11/15/2012 00:00:00";
            DateTime dt = DateTime.ParseExact(str, "MM/dd/yyyy hh:mm:ss", new CultureInfo("af-ZA"));
            Console.WriteLine(dt.ToString());
        }
    }
}

Custom Date and Time Format Strings

DateTime.ParseExact Method

【讨论】:

    【解决方案3】:

    试试这个:

    DateTime date = DateTime.Parse(yourDateTimeString);
    

    【讨论】:

      【解决方案4】:

      没有办法处理(东非标准时间)。

      假设 UTC=GMT 您也可以获得时区部分,只需删除字符串中不重要的部分

      string t = Regex.Replace("Thu Nov 15 2012 00:00:00 GMT+0300 (E. Africa Standard Time)", "([(].+?[)])", "");
      t= t.Replace("GMT", "").Trim();
      
      DateTime a = DateTime.ParseExact(t, "ddd MMM dd yyyy HH:mm:ss zzzz", System.Globalization.CultureInfo.InvariantCulture);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-03
        • 2014-01-15
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多