将字符串转换为DateTime

时间:2012-12-15 10:07:25

标签: c# string datetime typeconverter

  

可能重复:
  Date time format from string?

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

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

4 个答案:

答案 0 :(得分:6)

如果您只有以"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)"部分,我认为你应该实现一种自己解析它们的方法。我不认为有这样的说明。

答案 1 :(得分:1)

首先,你应该为你的非洲标准时间文化信息使用';

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

答案 2 :(得分:0)

试试这个:

DateTime date = DateTime.Parse(yourDateTimeString);

答案 3 :(得分:0)

无法处理(E.非洲标准时间)。

假设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);