日時文字列をYYYYMMDD形式でフォーマットする

日付をYYYYMMDD形式で送信する必要がある奇妙なAPIを使用しています。

次のようなことを考えていました:

string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 

もっと良い方法はありますか?

コメント

  • このようにDateTime.Nowを数回呼び出すときは注意してください。たとえば、DateTime.Now.Monthがちょうど呼び出された場合1月31日の真夜中前と真夜中以降のDateTime.Now.Dayには、20120101のような日付が表示されます。'可能性は低いですが、確かに可能です。
  • これはすでに'回答済み'ですが、彼らの方法とあなたの方法の主な違いは、1桁の月と日付の処理方法です。あなたの方法は2019年1月1日に201911を印刷しますが、他の方法は20190101を印刷します

回答

はい、あります:日付の書式設定

var dateString = DateTime.Now.ToString("yyyyMMdd"); 

回答

別のオプションは、次のような拡張メソッドを作成することです。

public static class DateTimeExtensions { public static string ToYMD(this DateTime theDate) { return theDate.ToString("yyyyMMdd"); } public static string ToYMD(this DateTime? theDate) { return theDate.HasValue ? theDate.Value.ToYMD() : string.Empty; } } 

次のように使用します:

var dateString = DateTime.Now.ToYMD(); 

実装された拡張機能は、NullableDateTime値に対しても機能します。

これらの「yyyyMMdd」形式のDateTime値を使用して多くの作業を行う場合、拡張メソッドには入力が少ないという利点があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です