上一个日历月的大纪元

时间:2018-06-26 10:13:54

标签: python bash timestamp epoch

问题:

我想为最后一个日历月生成一个纪元开始和结束时间。

假设今天格林威治标准时间是GMT: Wednesday, June 13, 2018 7:38:21 AM 我需要为日历中的上个月的GMT生成开始时间和结束时间,而不是今天的30天。

这意味着今天纪元1528875278 - 2592000不正确。

我需要的是这样的东西。

开始:1527964200,结束时间:1528568999 实际上就是

start : Saturday, May 1, 2018 6:30:00 PM
end   : Saturday, May 31, 2018 6:29:59 PM

我尝试过的事情:

import time
today_time = int(time.time())
start_time = int(time.time()) - 2592000 +/- some_bias
end_time   = int(time.time()) - 2592000 +/- some_bias

有人可以在这里帮助我吗?

2 个答案:

答案 0 :(得分:0)

您可以使用此命令获取上个月的第一天:

TZ=GMT date -d "$(date +"%Y-%m-01") -1 month"

并使用它来获取上个月的最后日期:

date -d "$(date +"%Y-%m-01") -1 day"

使用epoch时间和变量:

startTime=$(TZ=GMT date -d "$(date +"%Y-%m-01") -1 month" '%s')
endTime=$(date -d "$(date +"%Y-%m-01") -1 day" '%s')

答案 1 :(得分:0)

您可以在python 中使用内置datetime模块(适用于2.X和3.X)。这是一个示例:

import datetime
today = datetime.datetime.now()
end_of_last_month = today.replace(day=1) - datetime.timedelta(days=1)
start_of_last_month = end_of_last_month.replace(day=1)

要转换为时代,您可以在python 3.3+中执行以下操作

start_epoch = int(start_of_last_month.timestamp())
end_epoch = int(end_of_last_month.timestamp())

在早期版本的python中,可以通过以下方式完成:

start_epoch = int(start_of_last_month.strftime('%s'))
end_epoch = int(end_of_last_month.strftime('%s'))