-2

おそらく金曜日は論理について考えるのが少し難しいです。これは単純な論理かもしれません。

私の問題は、昨日の日時があることでした。私は 7,8,9...23, 0,1,2,3,6 からの hourValue を持っています。

DateTime yesterday_datetime = DateTime.Now.Date.AddDays(-1);    
DateTime todays_datetime = new DateTime();

Hours ループでは、以下のコードに hourvalue を追加する必要があります。

todays_datetime = yesterday_datetime.AddHours(hourValue);

しかし、hourvalue 0 になると、今日の日付ではなく、昨日の日付のみが使用されていました。

7,8,9...23,0,1,2,3,4,5,6 から 2013 年 5 月 30 日までの時間を追加していたので、2013 年 5 月 30 日に 7 を追加すると 30 になります。 /05/2013 07:00:00 など、23 時までは 30/05/2013 23:00:00 でした。0..6 になると、31/05/2013 00:00:00 および 31/05/2013 01:00:00 などになります。

ここで何か不足していますか?どんな助けでも大歓迎です。

乾杯

4

7 に答える 7

2

あなたが何かをしたなら

var now = DateTime.Now
for (var time = now.AddDays(-1); time < now; time = time.AddHours(1))
{
    // time enumerates the hours between yesterday and now.
}

それはうまくいくはずです。


または、ループが気に入らない場合は、

var yesterday = DateTime.Now.AddDays(-1);
var hourTimes = Enumerable.Range(0, 24)
    .Select(hourValue => yesterday.Add(hourValue));
于 2013-05-31T11:43:26.403 に答える
1

問題を完全に理解していない可能性があります。hourValue 0 があり、それらを昨日の日時に追加すると、その値は変更されません。右?

于 2013-05-31T11:41:09.013 に答える
0

これが必要かどうかはわかりませんが、次のようなことを試すことができます。

while (yesterday_datetime <= todays_datetime)
{
    // some logic

    yesterday_datetime = yesterday_datetime.AddHours(hourValue);
}

yesterday_datetimeの同じ日時がtodays_datetime1 時間ごとに取得されるまで、dateTime をループしますhourValue。が 0 ではないことを保証する必要hourValueがあります。

于 2013-05-31T11:41:02.093 に答える
0
todays_datetime = yesterday_datetime.AddHours(hourValue);

あなたのコードでは、昨日の日付時刻オブジェクトを更新していません。数時間追加した後でも、前日を指していました。最初に昨日の日付時刻を更新して、昨日の日付時刻を今日の日付時刻に割り当て、その後の処理に今日の日付時刻を使用する必要があります。

DateTime yesterday_datetime = DateTime.Now.Date.AddDays(-1);    
DateTime todays_datetime = yesterday_datetime ;
todays_datetime = todays_datetime .AddHours(hourValue);
于 2013-05-31T11:47:34.460 に答える
0

可能であれば、hourValue: 7,8,9...23,24,25,26,27,28 を簡単に使用できます。

于 2013-05-31T11:47:43.593 に答える
0

時間の値を修正する必要があります。

あなたの今の価値:

7、8、9... 23、0、1、2、3、6。

値は次のようにする必要があります。

7,8,9...23, 24, 25, ...

それ以外の場合、'AddHours(0)' を呼び出した場合、それはまだ昨日の日付です:

Console.WriteLine(
(yesterday_datetime.AddHours(0) == yesterday_datetime).ToString()
);

「True」を出力します

于 2013-05-31T11:45:49.767 に答える