5

文字列"Fri Sep 11 00:00:00 GMT+04:00 2020"DateTimeobjectに変換する必要があります11.09.2011

私が使うとき

DateTime result;
DateTime.TryParseExact(MyString, "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out result);

resultに等しい{9/10/2020 11:00:00 PM}です。

日付コンポーネントがない11.09.2011ようにコードを変更するにはどうすればよいですか(日付のみが必要で、時間は気にしません)。 10.09.2011

4

2 に答える 2

7

オフセットDateTimeOffsetある場合は、代わりに a に解析します。使用している指定子ドキュメントから:zz

DateTime 値では、"zz" カスタム形式指定子は、UTC からのローカル オペレーティング システムのタイム ゾーンの符号付きオフセットを時間単位で表します。インスタンスの DateTimeKind プロパティの値は反映されません。このため、"zz" 書式指定子を DateTime 値で使用することはお勧めしません。

したがって、次のようになります。

DateTimeOffset result;
bool success = DateTimeOffset.TryParseExact
         (text, "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy", 
          CultureInfo.InvariantCulture, DateTimeStyles.None, out result);

そこから、DateTime9 月 11 日の真夜中に参加できます。

日付だけが必要な場合は、私のNoda Timeプロジェクトを使用して以下を作成できますLocalDate

LocalDate = OffsetDateTime.FromDateTimeOffset(result).LocalDateTime.Date;

(直接 に解析することをお勧めしたいのですOffsetDateTimeが、まだサポートしていません。バージョン 1.2 に含めたいと考えています。)

于 2013-02-08T14:07:11.493 に答える
4

DateC# には純粋な型はありません。
時間を気にしない場合は、 のその部分を無視してDateTimeください。

時刻を常に午前 0 時にしたい場合は、プロパティを使用します。このプロパティは、同じ日付で午前 0 時に.Dateを返します。DateTime

于 2013-02-08T14:02:17.057 に答える