python - 准确的时间
问题描述
如何从时间戳/日期获取精确的时间
例如:
date = "2021-05-10T12:10:41"
回应是:
1 month 10 days ago
代替
1 month ago
使用timeago
包时
注意:我使用了 ISO 时间戳,因为这是来自 API 的响应,如果需要,我可以轻松转换它。
解决方案
您可能想查看dateutil-relativedelta:
from datetime import datetime
from dateutil import relativedelta
>>> relativedelta.relativedelta(datetime.now(), datetime.strptime("2021-05-10T12:10:41", "%Y-%m-%dT%H:%M:%S"))
relativedelta(months=+1, days=+19, hours=+1, minutes=+13, seconds=+32, microseconds=+86719)
如果要将上述输出表示为字符串,可以尝试如下自定义函数:
def time_before_now(isodate):
r = relativedelta.relativedelta(datetime.now(), datetime.strptime(isodate, "%Y-%m-%dT%H:%M:%S"))
if r.months < 0:
return f"{r.days} days"
elif r.months == 1:
return f"1 month and {r.days} days"
else:
return f"{r.months} months and {r.days} days"
>>> time_before_now("2021-05-10T12:10:41")
'1 month and 19 days'
推荐阅读
- typescript - 缩小打字稿中的联合类型
- tfs - 如何以一些常用格式发布 Flutter 测试结果以在 TFS/VSTS 中显示?
- entity-framework-core - Auto-mapper 3.2 与 Entity Framework core 2.1 一起抛出错误
- firebase - 无法生成角度 6 时间戳,缺少导入
- c# - 添加迁移异常:System.ArgumentNullException:值不能为空。参数名称:属性
- anaconda - geotext 库没有在 python 中选择正确的城市名称
- angular - 用于动态位置过滤的角度叠加
- javascript - 使用传单修改来自 WMS 的 GetFeatureInfo 请求
- python-3.x - 让 xticks 在带有 Pandas 的 Seaborn regplot 中显示月份
- android - 在我的应用程序中自定义 exoplayer 质量对话框