2

可能重复:
字符串中的日期时间格式?

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

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

4 回答 4

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

于 2012-12-15T10:29:37.247 回答
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

于 2012-12-15T10:42:07.170 回答
0

试试这个:

DateTime date = DateTime.Parse(yourDateTimeString);
于 2012-12-15T10:23:25.067 回答
0

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

假设 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);
于 2012-12-15T11:07:47.820 回答