1

C# で DateTime オブジェクトの ToString() 呼び出しから返されたジャンク データを取得しています。

この関数は、日付を RFC 822 (RSS 仕様で要求されている) に準拠するようにフォーマットすることになっており、次のようになります。

public static string FormatPubDate(DateTime pubDate) 
{
    string _rfc822Format = "ddd, dd MMM yyyy HH:mm:ss";
    string _tmp = pubDate.ToUniversalTime().ToString(_rfc822Format);

    return pubDate.ToString(_tmp + " UT");
}

DateTime ToString() ドキュメントから読み取ることができるものから、これは私が望むものでなければなりません。

ただし、一部の日付ではジャンクが生成されます。

 Console.WriteLine(FormatPubDate(new DateTime(2008, 12, 16, 13, 44, 33)));
 Console.WriteLine(FormatPubDate(new DateTime(2008, 12, 17, 13, 44, 33)));
 Console.WriteLine(FormatPubDate(new DateTime(2009, 3, 18, 4, 17, 20)));
 Console.WriteLine(FormatPubDate(new DateTime(2009, 4, 30, 10, 44, 33)));

収量:

Tue, 16 Dec 2008 19:44:33 UT
We17, 17 Dec 2008 19:44:33 UT
We18, 18 3ar 2009 09:17:20 UT
T10u, 30 Apr 2009 15:44:33 UT

Wed の代わりに We18 を返し、Mar の代わりに 3ar を返す理由はありますか?

4

3 に答える 3

12

あなたの問題は最後です

return pubDate.ToString(_tmp + " UT");

フォーマッタとして、フォーマットされた値を使用して DateTime で 2 番目の ToString() を実行しています...

に変更してみてください

string _rfc822Format = "ddd, dd MMM yyyy HH:mm:ss";
string _tmp = pubDate.ToUniversalTime().ToString(_rfc822Format);

return _tmp + " UT";
于 2009-04-30T16:11:04.967 に答える
3

代わりにこれを使用できますか?:

String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123
于 2009-04-30T16:09:41.507 に答える
3

現在、日付で ToString を呼び出して、RFC 形式で渡してから、その日付で ToString を再度呼び出して、既に変換された日付 + 「UT」を形式として apssing しています。

これを試して:

public static string FormatPubDate(DateTime pubDate) 
{
    string _rfc822Format = "ddd, dd MMM yyyy HH:mm:ss";
    return pubDate.ToUniversalTime().ToString(_rfc822Format) + " UT";

}
于 2009-04-30T16:11:23.203 に答える