1

重複の可能性:
日数を人間が読める形式のテキストに変換
する開始と終了を指定して、年と月の差を計算するにはどうすればよいですか。

(終了日-開始日)を使用します。TotalDaysは合計日数を返します。たとえば、145日

しかし、私は合計日数を望んでいません。

このように、145日を3か月と25日に変換することができます。

4

6 に答える 6

4

最初に思ったよりも少し難しい...

このようなことを行うことができると思います。これには、月を 30 日またはそれに類するものと見積もるよりも、実際の暦月を数えるという利点があります。

var now = DateTime.Now;
var future = DateTime.Now.AddDays(new Random().NextDouble() * 365);
//dates above for example only

var xx = Enumerable.Range(0,int.MaxValue)
        .Select(i => new{numMonths = i, date = now.AddMonths(i)})
        .TakeWhile(x => x.date < future)
        .Last();
var remainingDays = (future - xx.date).TotalDays;
Console.WriteLine("{0} months and {1} days",xx.numMonths,remainingDays);
于 2013-02-01T14:13:25.070 に答える
1

1 か月を 30 日と想定する場合は、以下が役立つ場合があります。

var start = DateTime.Today;

var end = DateTime.Today.AddDays(99);

var timeSpan = end.Subtract(start);

var months = (int)timeSpan.TotalDays / 30;

var days = timeSpan.TotalDays % 30;

var str = string.Format("{0} months, {1} days", months, days);
于 2013-02-01T13:58:27.753 に答える
0

1か月の日数の問題を克服するには、年と月を見てください。

DateTime d1 = New DateTime(2002, 1, 1);
DateTime d2 = New DateTime(2000, 10, 1);
int years = Math.Abs((d1.Year - d2.Year));
int months = ((years  * 12)  + Math.Abs((d1.Month - d2.Month)));
于 2013-02-01T13:57:20.907 に答える
0

DateTime2つのオブジェクトの違いにより、TimeSpanオブジェクトが作成されます。1か月の期間は月間で一貫していないため、オブジェクトはどのように月数でTimeSpan表されますか?

2つの日付の間の月数を計算するには、開始日と終了日を事前に知っておく必要があります。これにより、それらの間の実際の月数(うるう年などを考慮)を計算できます。

于 2013-02-01T13:58:24.930 に答える
0

年、月、日が必要な場合:

  1. 年 = 結果がまだ > 開始日となるように、終了日から減算できる最大年数。
  2. 月数 = 結果がまだ > 開始日となるように、前の結果から減算できる最大月数。
  3. 日数 = 前の結果から開始日までの日数。
于 2013-02-01T14:12:34.013 に答える
-3

文字列にタイムスパンを使用してみてください...

于 2013-02-01T13:56:45.623 に答える