Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将12小时时间格式转换为24小时时间格式(保留当天的记录)_Python_List_Datetime_Time - Fatal编程技术网

在python中将12小时时间格式转换为24小时时间格式(保留当天的记录)

在python中将12小时时间格式转换为24小时时间格式(保留当天的记录),python,list,datetime,time,Python,List,Datetime,Time,下面是python中的一个列表,其中包含一列火车的时间列表,每个索引都是火车的停止时间 Train_arrival_time = ['Source', '09:30 PM', '09:56 PM', '11:23 PM', '12:01 AM', '12:12 AM', '12:44 AM', '01:55 AM', '03:18 AM', '04:58 AM', '06:18 AM', '06:33 AM', '07:23 AM', '08:45 AM', '09:14 AM', '10:17

下面是python中的一个列表,其中包含一列火车的时间列表,每个索引都是火车的停止时间

Train_arrival_time = ['Source', '09:30 PM', '09:56 PM', '11:23 PM', '12:01 AM', '12:12 AM', '12:44 AM', '01:55 AM', '03:18 AM', '04:58 AM', '06:18 AM', '06:33 AM', '07:23 AM', '08:45 AM', '09:14 AM', '10:17 AM', '10:59 AM', '12:15 PM', '01:30 PM', '01:49 PM', '02:55 PM', '03:16 PM', '03:58 PM', '05:15 PM', '05:38 PM', '06:45 PM', '07:20 PM', '08:07 PM', '08:38 PM', '09:25 PM', '11:28 PM', '12:50 AM', '01:21 AM', '01:53 AM', '02:45 AM', '02:57 AM', '03:45 AM', '05:20 AM', '06:00 AM', '06:30 AM']
从列表中可以明显看出,该列车连续运行三天(
source
为起点站)。我正在尝试获取两个站点之间的时差,由于使用12小时格式会造成混乱,我尝试使用以下脚本将整个列表转换为24小时格式

from datetime import *
t12 = '09:35 PM'
t24 =  datetime.strptime(t12, '%I:%M %p')
这就是给予

1900-01-01 21:35:00
作为输出。有没有办法避免获得UTC日期?
此外,我还被困在如何获得不同日子两站之间的时差上;即,首先,将所有时间字符串转换为日期。这一天不重要,但我们以后会需要的

from datetime import datetime, timedelta
times = [datetime.strptime(x, '%I:%M %p') for x in Train_arrival_time[1:]]
现在,您可以保留要添加的连续天数,并将其添加到列表中的所有日期时间中。如果当前时间小于前一时间,请再添加一天

days_to_add = 0
for i in range(1, len(times)):
    times[i] += timedelta(days=days_to_add)
    if times[i] < times[i-1]:
        days_to_add += 1
        times[i] += timedelta(days=1)
输出:

Day 01, 21:30
...
Day 03, 06:30
1 day, 9:00:00
当然,如果连续两次的时差大于一整天,那么你就不走运了

我正在尝试获取两个站点之间的时差,由于使用12小时格式会造成混乱,我尝试使用以下脚本将整个列表转换为24小时格式

如果您只需要为相邻项目找到时差,那么这一天并不重要:

#/usr/bin/env python
从datetime导入datetime,timedelta
零,天=时间差(0),时间差(天=1)
times=(datetime.strtime(time12h_字符串,'%I:%M%p'))
列车到达时间[1:]中的时间12h\u字符串
上一次=下一次(次)
运输中的时间=[零]
对于时间24小时(以时间为单位):
time24h=datetime.combine(上一个时间,time24h.time())
时间24小时<上一站时间:#下一站时间不应提前
时间24小时+=天
传输中的时间。追加(时间24小时-上一个传输中的时间+传输中的时间[-1])
上一次时间=时间24小时
这里的
time\u in\u transmission
是从具有到达时间的第一个站点开始的站点之间的累积时间,即
time\u in\u transmission[i]
i
第四个站点的传输时间(站点和第一个站点之间的时差)。它被计算为相邻站点之间时间差的一系列部分和(like),即:

  • 通过
    列车到达时间
    列表中的索引(与
    在途时间
    列表相比移动1)和/或其到达时间来识别车站——查看下面输出中的车站
  • (时间24小时-上一个时间)
    是相邻站点之间的时差——请查看下面输出中的相邻
  • time\u-in-transit[-1]
    是该系列中的上一项(最后一项)——它与Python中的
    time\u-in-transit[len(time\u-transit)-1]
    相同
  • 当前项是“当前差额+累计总和”——请查看下面输出中的总计
有没有办法避免获得UTC日期

datetime.strtime()
的结果是一个简单的datetime对象,它与任何时区都不对应。如果你不知道具体的日期(年、月、日),那么谈论时区就没有意义了

我被困在如何获得不同日子两站之间的时差上;即日上午九时三十分(第一天)及下午十二时十五分(第二天)

很容易找到相邻站点之间的时间和在途总时间:

打印(“车站|相邻|总计”)
打印(“\n”.join([“{}}{:>8s}}}{}).format(time12h,str(curr-prev),str(curr))
时间为12小时,当前,上一个邮政编码(列车到达时间[1:],
过境时间,
[零]+时间(运输中)])
输出
车站|相邻|总计
晚上9:30 | 0:00:00 | 0:00:00
晚上09:56 | 0:26:00 | 0:26:00
晚上11:23 | 1:27:00 | 1:53:00
上午12:01 | 0:38:00 | 2:31:00
上午12:12 | 0:11:00 | 2:42:00
...
上午05:20 | 1:35:00 |一天,7:50:00
上午06:00 | 0:40:00 |一天,8:30:00
上午06:30 | 0:30:00 |一天,9:00:00
要查找
i
-th和
j
-th站之间的时差:

时差=传输中的时间[j]-传输中的时间[i]

datetime
对象包括一个日期,即
datetime
中的
date
。此外,如果要跟踪不同的日期,为什么要排除它们?是否只想显示这些对象的时间?如果是这样,则需要使用
strftime
格式化所需的字符串。但是,如果要对它们进行计算,则应将它们保留为
datetime
对象。@TigerhawkT3但日期是UTC的开始日期。我建议你用谷歌搜索一下如何创建
datetime
对象。
arrival\u time=t24.time()
。你为什么认为你得到UTC日期?您没有提供任何时区信息,因此datetime对象不包含Tzinfo谢谢您的回答,但我想我又卡住了<代码>时差不起作用,当传输中的时差足够大时,会出现
索引器错误:列表索引超出范围
错误。比如说,时间在途[40]-时间在途[2],我得到了
1天,4:22:00
作为
时间在途[35]-时间在途[2]
的答案,而实际花费的时间超过了3天|@贾温:1
IndexError
这个问题很小(您只需要了解Python中的索引是如何工作的——关于堆栈溢出存在很多问题。我建议您使用playi
Day 01, 21:30
...
Day 03, 06:30
1 day, 9:00:00