Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 只有Unix时间戳,如何找到最近的前一个星期一?_Date_Language Agnostic_Timestamp_Utc_Unix Timestamp - Fatal编程技术网

Date 只有Unix时间戳,如何找到最近的前一个星期一?

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) 我想如果你想要一个简单的实现,你可以从已知的星期一(午夜)中减去

给定一个Unix时间戳,我如何在0:00找到星期一的时间戳,距离它最近

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;
}