20

私がするとき私は同じ結果1338161400を持っています

    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    DateTime date = DateTime.Parse(@"28/05/12 01:30");
    TimeSpan diff = date.ToUniversalTime() - origin;
    Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());

また、date.AddHours(-4)を使用する場合:

    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    DateTime date = DateTime.Parse(@"28/05/12 01:30");
    date.AddHours(-4);
    TimeSpan diff = date.ToUniversalTime() - origin;
    Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());

http://www.mbari.org/staff/rich/utccalc.htmのように1338168600を取得しようとしています

アップデート:

ありがとう私はに変更しました

    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    DateTime date = DateTime.Parse(@"28/05/2012 01:30");
    date = date.AddHours(-4);
    date = date.ToUniversalTime();
    TimeSpan diff = date - origin;
    Console.WriteLine((Math.Floor(diff.TotalSeconds)).ToString());  

しかし、私は1338147000を取得しましたが、1338168600ではありません

4

8 に答える 8

68

日付は不変のオブジェクトです。つまり、作成後に変更することはできません。DateTime.AddHoursは、4時間後方にシフトされた新しいDateTimeインスタンスを返しますが、「date」は変更されません。

使用する:

DateTime newDate = date.AddHours(-4);
于 2012-05-28T08:19:42.037 に答える
8

AddHours元のオブジェクトに時間を追加した結果である新しい オブジェクトを返します。DateTimeオリジナルは変更されません。

したがって、あなたdate = date.AddHours(-4);はただの代わりに欲しいdate.AddHours(-4);

于 2012-05-28T08:19:23.610 に答える
5

元の日付は4時間前に設定されていますが、新しい日付には設定されていません。代わりにこれを試してください:

date = date.AddHours(-4);
于 2012-05-28T08:20:48.057 に答える
4

AddHours単に新しい増分日を返します。これを使用してください:

date = date.AddHours(-4);
于 2012-05-28T08:19:41.117 に答える
3

DateTime は不変ではありません。DateTime メソッドは構造体を変更せず、代わりに新しい構造体を返すだけです。

これを行う場合:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now;
d1 = d2;

次に、構造体 d1 が d2 の値で上書きされます。

不変の構造体を持つことが可能かどうかはわかりません。

于 2015-10-27T19:41:59.950 に答える
2

AddHoursは、新しいDateTimeオブジェクトを返します。これを行う:

date = date.AddHours(-4);

ドキュメント:リンク

于 2012-05-28T08:20:40.023 に答える