最后一个日历月的纪元时间

Posted

技术标签:

【中文标题】最后一个日历月的纪元时间【英文标题】:Epoch time for last calender Month 【发布时间】:2018-12-05 00:36:33 【问题描述】:

问题:

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

假设今天格林威治标准时间是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

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

您可以在 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'))

【讨论】:

【参考方案2】:

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

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')

【讨论】:

以上是关于最后一个日历月的纪元时间的主要内容,如果未能解决你的问题,请参考以下文章

纳秒分辨率到纳秒纪元的日历时间

js实现日历

Autosys工作计划在每个月的最后4天之外运行

获取日历月的第一个星期一

Java获取本月最后一天问题

Jquery日历禁用过去一个月的问题[重复]