Unix タイムスタンプが与えられた場合、月曜日の 0:00 のタイムスタンプを見つけるにはどうすればよいですか。
mondaybefore = findit(some_random_timestamp)
カレンダー情報にはアクセスできず、UTC である Unix タイムスタンプだけにアクセスできます。月曜日は、 ISO 8601に従って月曜日と見なされます。
Unix タイムスタンプが与えられた場合、月曜日の 0:00 のタイムスタンプを見つけるにはどうすればよいですか。
mondaybefore = findit(some_random_timestamp)
カレンダー情報にはアクセスできず、UTC である Unix タイムスタンプだけにアクセスできます。月曜日は、 ISO 8601に従って月曜日と見なされます。
適切な日付ライブラリを使用する必要があると思います。「月曜日」の概念はカレンダー固有であり、夏時間のために異なり(その月曜日に特定の時間を必要とする場合)、タイムゾーンによって異なる場合があります(厳密に言えば、UNIXタイムスタンプはUTCに基づく必要があります)。 。
単純な実装が必要な場合は、既知の月曜日(深夜)から対象のタイムスタンプを減算し、86,400(= 24 * 60 * 60)で整数除算することができると思います。結果の値が0の場合、月曜日が見つかりました。ただし、これはUTCタイムゾーン内でのみ有効であり、夏時間には調整されません。
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;
}