58

私には2つの日付があります。このような文字列を作りたい

「0日、0時間、23分、18秒」

2つの日付の違いを表します。この文字列のこれらの要素を取得するにはどうすればよいですか?

4

9 に答える 9

128

TimeSpanは必要なオブジェクトです。

TimeSpan span = (DateTime.Now - DateTime.Now);

String.Format("{0} days, {1} hours, {2} minutes, {3} seconds", 
    span.Days, span.Hours, span.Minutes, span.Seconds);
于 2012-05-10T16:36:26.790 に答える
14

DateTimeある値から別の値を引くTimeSpanと、それらの値を公開するインスタンスが得られます。

TimeSpan diff = DateTime.Now - DateTime.Today;
string formatted = string.Format(
                       CultureInfo.CurrentCulture, 
                       "{0} days, {1} hours, {2} minutes, {3} seconds", 
                       diff.Days, 
                       diff.Hours, 
                       diff.Minutes, 
                       diff.Seconds);
于 2012-05-10T16:36:20.593 に答える
6

TimeSpan を使用する

DateTime startTime = DateTime.Now;

DateTime endTime = DateTime.Now.AddSeconds( 75 );

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
Console.WriteLine( "Time Difference (hours): " + span.Hours );
Console.WriteLine( "Time Difference (days): " + span.Days );

String yourString = string.Format("{0} days, {1} hours, {2} minues, {3} seconds",
    span.Days, span.Hours, span.Minutes, span.Seconds);
于 2012-05-10T16:39:12.030 に答える
6

日付を減算すると得られるTimeSpanクラスを使用します。

標準またはカスタムのフォーマット文字列を使用して、出力をフォーマットできます。

「0日0時間23分18秒」

次のようなものを使用できます。

TimeSpan ts = DateTime.Now - DateTime.Today;
Console.WriteLine(
   string.Format("{0:%d} days, {0:%h} hours, {0:%m} minutes, {0:%s} seconds", ts)
);

string.FormatIMO、フォーマット文字列の単語をエスケープする必要がなく(使用したばかりの場合に必要です.ToString)、手動で作成する代わりに、よりクリーンで使いやすくなっています。

于 2012-05-10T16:46:21.527 に答える
4

この計算を移植可能にしたい場合は、UTC として保存し、表示するときに現地時間に変換する必要があることを忘れないでください。原則として、日付を UTC として保存し、表示のために現地時間に変換します。

于 2016-07-12T00:11:53.510 に答える
3

このようなものはどうですか?

    TimeSpan diff = dateTimeNew - dateTimeOld;
    string output = string.Format("{0} days, {1} hours, {2} minues, {3} seconds", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
    Console.WriteLine(output);
于 2012-05-10T16:40:26.857 に答える
3
    DateTime myDay = DateTime.Now;
    DateTime otherDate = DateTime.Now.AddYears(1);
    var test = otherDate.Subtract(myDay);
    Console.WriteLine("Days:" + test.Days + "Hours:" + test.Hours +"Minutes" +  test.Minutes +"Seconds" + test.Seconds);

ここで test はタイプ TimeStamp です

于 2012-05-10T16:40:32.107 に答える
3

使ってみましたか

TimeSpan()

それは確かにあなたが望むことをすることができます

于 2012-05-10T16:36:29.803 に答える
2
TimeSpan diffTime = dateTimeNew -PreviousDate;
int days=diffTime.Days;
int hours=diffTime.Hours;
int minutes=diffTime.Minutes;
int seconds=diffTime.Seconds;
于 2016-03-22T12:16:49.533 に答える