2

重複の可能性:
文字列からの日時形式?

DateTime次の文字列をC#の値に変換する方法を知っている人はいますか?

"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」4桁の数字としての年。
  • 「HH」00から23までの24時間制を使用した時間。
  • 「mm」00から59までの分。
  • "ss"00から59までの2番目。
  • ":"時間区切り記号。
  • "string"、'string'リテラル文字列区切り文字。

さまざまな形式指定子の詳細については、MSDNの記事「カスタムの日付と時刻の形式文字列」を参照してください。

また、一部も解析したい場合は"GMT+0300 (E. Africa Standard Time)"、自分で解析する方法を実装する必要があると思います。そのための指定子はないと思います。

于 2012-12-15T10:29:37.247 に答える
1

まず第一に、アフリカ標準時の文化情報を自分のものに使用する必要があります。

CultureInfo( "af-ZA", false );

しかし、あなたの文字列は に変換するのが本当に複雑ですDateTimeDateTime私にとって、完全に変換することは不可能に見えます。しかし、私たちはあなたのひもにいくらかのリハビリをすることができます. たとえば、文字列が次のようだったとします。"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

(東アフリカ標準時)の扱いはありません。

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 に答える
0

これを試して:

DateTime date = DateTime.Parse(yourDateTimeString);
于 2012-12-15T10:23:25.067 に答える