在给定 Unix 时间戳的情况下,我如何才能找到最靠近它的星期一 0:00 的时间戳。
mondaybefore = findit(some_random_timestamp)
我无法访问日历信息,只能访问 Unix 时间戳,即 UTC。根据ISO 8601 ,星期一假定为星期一。
在给定 Unix 时间戳的情况下,我如何才能找到最靠近它的星期一 0:00 的时间戳。
mondaybefore = findit(some_random_timestamp)
我无法访问日历信息,只能访问 Unix 时间戳,即 UTC。根据ISO 8601 ,星期一假定为星期一。
在 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;
}
我认为您必须使用适当的日期库。“星期一”的概念是特定于日历的,会因夏令时而有所不同(假设您想要那个星期一的特定时间),并且可能因您的时区而异(严格来说,UNIX 时间戳应该基于 UTC) .
我想如果你想要一个简单的实现,你可以从已知的星期一(午夜)减去感兴趣的时间戳,然后整数除以 86,400(= 24 * 60 * 60)。如果结果值为 0,则您找到了星期一。但这仅在 UTC 时区有效,不会针对夏令时进行调整。