Date 只有Unix时间戳,如何找到最近的前一个星期一?
给定一个Unix时间戳,我如何在0:00找到星期一的时间戳,距离它最近Date 只有Unix时间戳,如何找到最近的前一个星期一?,date,language-agnostic,timestamp,utc,unix-timestamp,Date,Language Agnostic,Timestamp,Utc,Unix Timestamp,给定一个Unix时间戳,我如何在0:00找到星期一的时间戳,距离它最近 mondaybefore = findit(some_random_timestamp) 我没有访问日历信息的权限,只有Unix时间戳,即UTC。根据,星期一被假定为星期一。我认为您必须使用适当的日期库。“星期一”的概念是特定于日历的,由于夏令时的原因会有所不同(假设您希望在该星期一的某个特定时间),并且可能因时区而异(严格来说,UNIX时间戳应基于UTC) 我想如果你想要一个简单的实现,你可以从已知的星期一(午夜)中减去
mondaybefore = findit(some_random_timestamp)
我没有访问日历信息的权限,只有Unix时间戳,即UTC。根据,星期一被假定为星期一。我认为您必须使用适当的日期库。“星期一”的概念是特定于日历的,由于夏令时的原因会有所不同(假设您希望在该星期一的某个特定时间),并且可能因时区而异(严格来说,UNIX时间戳应基于UTC)
我想如果你想要一个简单的实现,你可以从已知的星期一(午夜)中减去感兴趣的时间戳,然后除以86400(=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
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;
}
在C中,如下所示:
def find_nearest_previous_monday(t):
r = (t - (t % WEEK)) - (3 * DAY)
if (t - r) >= WEEK:
r += WEEK
return r
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;
}