13

私のコードにはこのようなものがDateTime.Now.ToString("dd.MM.yy");あります。それに1週間追加する必要があります。たとえば、intに変換してから追加しようとしましたが、30までになると問題が発生します5.4.201212.4.2012

それを行うための賢い方法を教えていただけますか?

4

3 に答える 3

31

DateTime文字列に変換する準備ができるまで、そのままにしておきます。

DateTime.Now.AddDays(7).ToString("dd.MM.yy");
于 2012-04-05T21:41:09.433 に答える
6

まず、データを表示するかシリアル化する (たとえば、JSON に変換する、またはファイルに保存する) 準備ができるまで、常にデータをネイティブ タイプのままにしておきます。2 つの変数を加算または乗算する前に文字列に変換することはintありません。したがって、日付に対しても変換しないでください。

ネイティブ型にとどまることには、DateTimeほとんどの文字列形式よりも小さい 8 バイトとして内部的に格納されるなど、いくつかの利点があります。しかし、最大の利点は、.NET Framework が、日付と時刻の計算を実行し、ソース文字列から datetime 値を解析するための一連の組み込みメソッドを提供することです。完全なリストはここにあります

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

  • から現在のタイムスタンプを取得しDateTime.Nowます。DateTime.Now.Date現在時刻よりも午前 0 時を使用する場合に使用します。
  • AddDays(7)1週間後の計算に使用します。この方法では、該当する場合、翌月または翌年への繰り越しが自動的に考慮されることに注意してください。うるう日も考慮されます。
  • 目的の形式を使用して結果を文字列に変換します
// Current local server time + 7 days
DateTime.Now.AddDays(7).ToString("dd.MM.yy");

// Midnight + 7 days
DateTime.Now.Date.AddDays(7).ToString("dd.MM.yy");

また、フレームワークには他にも役立つメソッドがたくさんあります。

  • 国際化
  • UTC とタイムゾーン (ただし、より高度なアプリケーションについてはNodaTimeを確認してください)
  • 一部の基本的な数学計算の演算子のオーバーロード
  • TimeSpan時間間隔を操作するためのクラス
于 2012-04-05T21:41:55.960 に答える
1

のようにAddDaysメソッドを使用できない理由

DateTime.Now.AddDays(7)
于 2012-04-05T21:41:49.777 に答える