4

私はこの文字列を持っています:

string date = "Sun, 17 Mar 2013 12:40:23 +0000";

日付型に変換しようとしていますが、変換しようとすると、正しくない形式のエラーが発生し続けます。

DateTime dt = Convert.ToDateTime(date);

そして、これらの形式に変換しようとしています:

dt.ToString("dd")
dt.ToString("MMMM")
dt.ToString("yyyy")
4

8 に答える 8

7

変換にはDateTime.ParseExactを使用できます。

次のコードを試してください。

var date = "Sun, 17 Mar 2013 12:40:23 +0000";
var dt = DateTime.ParseExact(date, "ddd, dd MMM yyyy hh:mm:ss zzz", CultureInfo.InvariantCulture);

Console.WriteLine(dt.ToString("dd"));
Console.WriteLine(dt.ToString("MMMM"));
Console.WriteLine(dt.ToString("yyyy"));

出力:

17
March
2013
于 2013-03-20T13:55:44.337 に答える
3

試してみるDateTime.TryParse()DateTime.Parse()

于 2013-03-20T13:52:06.227 に答える
3

代わりにDateTime.Parseを使用してみてください。

var dt = DateTime.Parse(date);

また、日付が常に有効な形式であることを確認するために、DateTime.TryParseを使用して日付を解析することをお勧めします。

DateTime result;
if (DateTime.TryParse(date, out result))
{
    Console.WriteLine(result.ToString("dd"));
    Console.WriteLine(result.ToString("MMMM"));
    Console.WriteLine(result.ToString("yyyy"));
}
else
{
    Console.WriteLine("Error parsing date.");
}

それでも問題が発生する場合は、 DateTime にCultureInfoを提供する必要がある場合があります。これにより、パーサーが使用する正確なカルチャを指定して、コンピューターの地域設定が問題を引き起こさないようにすることができます。

DateTime.Parse(date, new CultureInfo("en-US"));     // Specific culture
DateTime.Parse(date, CultureInfo.InvariantCulture); // Culture-insensitive

// Culture-insensitive TryParse
if (DateTime.TryParse(date, out result, CultureInfo.InvariantCulture)) 
{...} 

通常の DateTime は、オペレーティング システムによって設定されたカルチャを使用します。

于 2013-03-20T13:52:49.823 に答える
2

DateTime.Parse現在のカルチャを無視してwhichを使用できるためCultureInfo.InvariantCulture、ローカリゼーションの問題を回避できます。

DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture);

CultureInfo.InvariantCultureは英語の文化に似ており、文字列で機能します。

デモ

于 2013-03-20T14:06:37.697 に答える
1

DateTime.TryParseメソッドを確認しましたか? 下にスクロールすると、最後のサンプルが実際には「Fri, 15 May 2009 20:10:57 GMT」であることがわかります。これは、リクエストと同様です。

于 2013-03-20T13:53:34.670 に答える
1

You can use DateTime.Parse() method like;

string date = "Sun, 17 Mar 2013 12:40:23 +0000";
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("dd"));
Console.WriteLine(dt.ToString("MMMM"));
Console.WriteLine(dt.ToString("yyyy"));

Output will be;

17
March
2013

Here is a DEMO.

于 2013-03-20T13:56:58.303 に答える
0

さて..数値形式の結果が必要な場合は、以下に示すように試してください

 string date = "Sun, 17 Mar 2013 12:40:23 +0000";
 DateTime dt = Convert.ToDateTime(date);
 var day = dt.Day;
 var month = dt.Month;
 var year = dt.Year;
 var time = dt.ToShortTimeString();
 var hour = dt.Hour;
 var minute = dt.Minute;
 var second = dt.Second;

変数は正確な数値形式を返します。注意:時間は24時間形式で表示されます

于 2013-03-20T14:38:35.877 に答える
0

public string dateConversion(string da) { string sDate = da; sDate = sDate.Replace("-", "/"); sDate = sDate.Replace(".", "/");

    string format = "dd/MM/yyyy";
    DateTime dDate;
    if (DateTime.TryParse(sDate, out dDate))
    {

        //if (DateTime.TryParseExact(sDate, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate))
        //{

        sDate = dDate.ToString("MM/dd/yyyy");
        sDate = sDate.Replace("-", "/");
        sDate = sDate.Replace(".", "/");

    }
    return sDate;
}
于 2015-02-18T05:42:30.243 に答える