어떻게 Unix 타임 스탬프가 주어지면 월요일의 타임 스탬프를 가장 가까운 0:00에 찾을 수 있습니까?유닉스 타임 스탬프 이외에 가장 가까운 월요일을 찾는 방법은 무엇입니까?
mondaybefore = findit(some_random_timestamp)
캘린더 정보에 액세스 할 수 없으며 Unix 타임 스탬프 (UTC)입니다. 월요일은 ISO 8601에 따른 월요일로 가정합니다.
어떻게 Unix 타임 스탬프가 주어지면 월요일의 타임 스탬프를 가장 가까운 0:00에 찾을 수 있습니까?유닉스 타임 스탬프 이외에 가장 가까운 월요일을 찾는 방법은 무엇입니까?
mondaybefore = findit(some_random_timestamp)
캘린더 정보에 액세스 할 수 없으며 Unix 타임 스탬프 (UTC)입니다. 월요일은 ISO 8601에 따른 월요일로 가정합니다.
적절한 날짜 라이브러리를 사용해야합니다. "Monday"에 대한 아이디어는 달력에 따라 다르며 일광 절약 시간으로 인해 변형 될 것입니다 (월요일에 특정 시간을 원한다고 가정). 시간대에 따라 다를 수 있습니다 (UNIX 타임 스탬프는 UTC를 기반으로해야 함) .
순진한 구현을 원한다면 알려진 월요일 (자정에 해당)에서 시간 소인을 빼고 86,400 (= 24 * 60 * 60)으로 정수 나누기를 할 수 있습니다. 결과 값이 0이면 월요일을 발견했습니다. 그러나 이것은 UTC 시간대 내에서만 유효하며 일광 절약 시간제로는 조정되지 않습니다.
파이썬에서,이 솔루션은 다음과 같을 것이다 :
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;
}