我在几分钟内就有一个大数字列表,我想转换或获取这四个分钟,小时,天和月的列表。举例来说:
Minutes
21601
30
0
90000
结果列表:
Minutes Hours Days Months
1 0 15 0
30 0 0 0
0 0 0 0
0 12 2 2
假设一个月恰好有30天。此外,我知道我在这里将它们显示为简单的列,但这些将是列表 欢呼声,
答案 0 :(得分:2)
另一种方法是使用datetime.timedelta。
from datetime import datetime, timedelta
d = timedelta(minutes=90000)
print("DAYS:SECONDS")
print("%d:%d" % (d.days, d.seconds))
这会给你:
DAYS:SECONDS 62:43200
您始终可以将其转换为您想要的日期格式
答案 1 :(得分:1)
您可以使用以下方法
def format (minutes):
year = (int) (minutes/(12*30*24*60))
month = ((int) (minutes/(30*24*60)))%12
day = ((int) (minutes/(24*60)))%30
hour = ((int) (minutes/(60)))%24
min = ((int) (minutes))%60
return [min,hour,day,month,year]
lis = [21601,30,0,90000]
ans = list(map(lambda x: format(x) , lis))
print(ans)
答案 2 :(得分:1)
您可以将timedelta
对象与datetime
一起使用。
示例:
from datetime import timedelta, datetime
def convert_from_minutes(minutes):
td = timedelta(minutes=minutes)
dt = datetime(1,1,1)
result = dt + td
return {
"days": result.day-1,
"hours": result.hour,
"minutes": result.minute,
"seconds": result.second
}
ans = convert_from_minutes(21601)
ans["days"] # gives 15
ans["hours"] # gives 0
ans["minutes"] # gives 1
ans["seconds"] # gives 0
答案 3 :(得分:1)
您可以使用内置函数divmod
将分割/余数操作包装成一个:
rem, minutes = zip(*(divmod(x, 60) for x in list_minutes))
rem, hours = zip(*(divmod(x, 24) for x in rem))
months, days = zip(*(divmod(x, 30) for x in rem))
当然,您可以使用datetime.timedelta
函数从您的分钟中获取timedelta,但是,这仍然需要一些额外的数学操作才能获得数月和小时。
答案 4 :(得分:0)
好的,我找到了解决办法,但如果这是最好的方式,我不会这样做,但似乎有效:
# list_minutes -is a list of minutes
minutes=[x % 60 for x in list_minutes]
remeinder1=[x // 60 for x in list_minutes]
hours=[x % 24 for x in remeinder1]
remeinder2=[x // 24 for x in remeinder1]
days=[x % 30 for x in remeinder2]
month=[x % 30 for x in remeinder2]
干杯。