Python可读的人类日期差异
我有一些这样的日期字符串:
Mon Jun 28 10:51:07 2010
Fri Jun 18 10:18:43 2010
Wed Dec 15 09:18:43 2010
有没有什么简单的Python方法可以计算它们之间的天数差?假设时区是一样的。
这些字符串是通过Linux命令得到的。
编辑:谢谢大家,很多很好的回答
7 个回答
6
当然可以!请看下面的内容:
这个问题主要是在讨论如何处理一些编程中的常见情况。很多时候,我们在写代码的时候,会遇到一些错误或者需要优化的地方。这个时候,理解这些问题的根源就显得特别重要。
比如,有时候代码运行得很慢,可能是因为某些部分的逻辑不够高效。我们可以通过分析代码,找出哪些地方可以改进,来让程序运行得更快。
另外,代码中的错误也很常见。有时候是因为拼写错误,有时候是因为使用了不合适的函数。解决这些问题需要仔细检查代码,确保每一行都能正常工作。
总之,编程就像是解谜,遇到问题时要冷静分析,找到解决办法。希望这些内容能帮助你更好地理解编程中的一些常见问题!
>>> import datetime
>>> a = datetime.datetime.strptime("Mon Jun 28 10:51:07 2010", "%a %b %d %H:%M:%S %Y")
>>> b = datetime.datetime.strptime("Fri Jun 18 10:18:43 2010", "%a %b %d %H:%M:%S %Y")
>>> c = a-b
>>> c.days
10
7
使用 strptime。
示例用法:
from datetime import datetime
my_date = datetime.strptime('Mon Jun 28 10:51:07 2010', '%a %b %d %H:%M:%S %Y')
print my_date
编辑:
你也可以以人类易读的方式打印时间差,比如这样:
from time import strptime
from datetime import datetime
def date_diff(older, newer):
"""
Returns a humanized string representing time difference
The output rounds up to days, hours, minutes, or seconds.
4 days 5 hours returns '4 days'
0 days 4 hours 3 minutes returns '4 hours', etc...
"""
timeDiff = newer - older
days = timeDiff.days
hours = timeDiff.seconds/3600
minutes = timeDiff.seconds%3600/60
seconds = timeDiff.seconds%3600%60
str = ""
tStr = ""
if days > 0:
if days == 1: tStr = "day"
else: tStr = "days"
str = str + "%s %s" %(days, tStr)
return str
elif hours > 0:
if hours == 1: tStr = "hour"
else: tStr = "hours"
str = str + "%s %s" %(hours, tStr)
return str
elif minutes > 0:
if minutes == 1:tStr = "min"
else: tStr = "mins"
str = str + "%s %s" %(minutes, tStr)
return str
elif seconds > 0:
if seconds == 1:tStr = "sec"
else: tStr = "secs"
str = str + "%s %s" %(seconds, tStr)
return str
else:
return None
older = datetime.strptime('Mon Jun 28 10:51:07 2010', '%a %b %d %H:%M:%S %Y')
newer = datetime.strptime('Tue Jun 28 10:52:07 2010', '%a %b %d %H:%M:%S %Y')
print date_diff(older, newer)
6
#!/usr/bin/env python
import datetime
def hrdd(d1, d2):
"""
Human-readable date difference.
"""
_d1 = datetime.datetime.strptime(d1, "%a %b %d %H:%M:%S %Y")
_d2 = datetime.datetime.strptime(d2, "%a %b %d %H:%M:%S %Y")
diff = _d2 - _d1
return diff.days # <-- alternatively: diff.seconds
if __name__ == '__main__':
d1 = "Mon Jun 28 10:51:07 2010"
d2 = "Fri Jun 18 10:18:43 2010"
d3 = "Wed Dec 15 09:18:43 2010"
print hrdd(d1, d2)
# ==> -11
print hrdd(d2, d1)
# ==> 10
print hrdd(d1, d3)
# ==> 169
# ...
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。