0

在给定 Unix 时间戳的情况下,我如何才能找到最靠近它的星期一 0:00 的时间戳。

mondaybefore = findit(some_random_timestamp)

我无法访问日历信息,只能访问 Unix 时间戳,即 UTC。根据ISO 8601 ,星期一假定为星期一。

4

2 回答 2

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 回答
0

我认为您必须使用适当的日期库。“星期一”的概念是特定于日历的,会因夏令时而有所不同(假设您想要那个星期一的特定时间),并且可能因您的时区而异(严格来说,UNIX 时间戳应该基于 UTC) .

我想如果你想要一个简单的实现,你可以从已知的星期一(午夜)减去感兴趣的时间戳,然后整数除以 86,400(= 24 * 60 * 60)。如果结果值为 0,则您找到了星期一。但这仅在 UTC 时区有效,不会针对夏令时进行调整。

于 2012-10-03T13:27:27.383 回答