python - Python中具有特定格式的连续日期
问题描述
我正在尝试执行这样的功能:
def getDates(firstDate):
其中 firstDate 是具有以下格式的字符串:
"%Y-%m-%dT%H:%M:%SZ"
该函数必须以该日期格式在屏幕上打印连续天数,从输入日期开始,最后一个日期必须是执行该函数的日期。
解决方案
这可以使用 datetime 和 timedelta 来实现
from datetime import timedelta, datetime
def getDates(firstdate):
使用 strptime 将字符串转换为日期时间。并使用 now() 获取当前日期时间
fdate=datetime.strptime(firstdate,"%Y-%m-%dT%H:%M:%SZ")
ldate=datetime.now()
要获得增量,只需从第一个子跟踪最后一个,增量将是一个 timedelta,因此您可以使用 timedelta.days 查看迭代的天数。如果 delta 为负,则日期为未来日期。我假设他会返回一个空列表。
delta = ldate - fdate
alldates=[]
if delta.days>=0:
如果 delta 为 0 或更大,则创建从 lastdate 开始的日期时间对象列表,每次递减一天。
alldates=list(map(lambda d: ldate-timedelta(days=d),range(delta.days+1)))
请记住反转列表,因为这将从结束日期开始并向后工作到开始日期 alldates.reverse() return alldates
测试使用的当前日期 -1 天、-1/2 天、+1/2 天和当前(ish)时间
print(getDates("2020-05-12T22:10:08Z"))
print(getDates("2020-05-12T12:10:08Z"))
print(getDates("2020-05-13T22:10:08Z"))
print(getDates("2020-05-13T12:10:08Z"))
[datetime.datetime(2020, 5, 13, 16, 7, 6, 883590)]
[datetime.datetime(2020, 5, 12, 16, 7, 6, 883747), datetime.datetime(2020, 5, 13, 16, 7, 6, 883747)]
[]
[datetime.datetime(2020, 5, 13, 16, 7, 6, 883907)]
推荐阅读
- c++ - 将 const *char[] 变量与 char[] 连接起来
- kubernetes - master会知道k8s中workers/nodes上的数据吗
- c# - EF Core 到 Mysql 表绑定
- reactjs - React JS,如何在两个页面中显示状态
- html - CSS设置2行4个框
- android - 如何在 cordova android 应用程序上添加新的 buildTypes?
- python - 如何在matplotlib中添加箱线图以散布数据
- arm - 使用哪个 ARM Cortex M 产品线?
- android-camera - 我的 onDestroy 有什么问题?(旧 api 相机)
- javascript - 跨 Safari 和 iOS 加载图像的 getJSON 问题