0

Unix タイムスタンプが与えられた場合、月曜日の 0:00 のタイムスタンプを見つけるにはどうすればよいですか。

mondaybefore = findit(some_random_timestamp)

カレンダー情報にはアクセスできず、UTC である Unix タイムスタンプだけにアクセスできます。月曜日は、 ISO 8601に従って月曜日と見なされます。

4

2 に答える 2

0

適切な日付ライブラリを使用する必要があると思います。「月曜日」の概念はカレンダー固有であり、夏時間のために異なり(その月曜日に特定の時間を必要とする場合)、タイムゾーンによって異なる場合があります(厳密に言えば、UNIXタイムスタンプはUTCに基づく必要があります)。 。

単純な実装が必要な場合は、既知の月曜日(深夜)から対象のタイムスタンプを減算し、86,400(= 24 * 60 * 60)で整数除算することができると思います。結果の値が0の場合、月曜日が見つかりました。ただし、これはUTCタイムゾーン内でのみ有効であり、夏時間には調整されません。

于 2012-10-03T13:27:27.383 に答える
0

Python では、ソリューションは次のようになります。

def find_nearest_previous_monday(t):
    r = (t  - (t % WEEK)) - (3 * DAY)
    if (t - r) >= WEEK:
        r += WEEK

    return r

C では、次のようになります。

time_t find_nearest_previous_monday(const time_t t)
{
    time_t r;

    r = (t - (t % WEEK)) - (3 * DAY)
    if (t - r) >= WEEK {
        r += WEEK;
    }

    return r;
}
于 2012-10-03T13:40:36.493 に答える