日付をYYYYMMDD形式で送信する必要がある奇妙なAPIを使用しています。
次のようなことを考えていました:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
もっと良い方法はありますか?
コメント
回答
はい、あります:日付の書式設定
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値を使用して多くの作業を行う場合、拡張メソッドには入力が少ないという利点があります。
DateTime.Now
を数回呼び出すときは注意してください。たとえば、DateTime.Now.Month
がちょうど呼び出された場合1月31日の真夜中前と真夜中以降のDateTime.Now.Day
には、20120101
のような日付が表示されます。'可能性は低いですが、確かに可能です。