Нужна помощь в преобразовании строки времени окончания статистики AM - PM в Datetime 24hr - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь преобразовать некоторые данные из csv в конкретную структуру данных json, и у меня есть строка в формате следующих отдельных примеров: «8:30 - 12:30» "12:00 - 14:00" где время перед «-» является временем начала, а время после «-» - временем окончания. Я пытался разделить их на две переменные startTime и endTime в 24-часовом формате. Примеры:

startTime = 0830 endTime = 1230

startTime = 1200 endTime = 1400

Ответы [ 2 ]

1 голос
/ 08 мая 2019
def get_24_format(time):
    timeinstr = ""
    if len(time.split(":")[0]) is 1:
        if time[len(time)-2] == 'A':
            timeinstr += "0{}".format(time.split(":")[0])
        else:
            timeinstr += "{}".format(int(time.split(":")[0])+12)
    else:
        if time[len(time)-2] == 'A':    
            timeinstr += "{}".format(time.split(":")[0])
        else:
            timeinstr += "{}".format(int(time.split(":")[0])+12)
    timeinstr += time.split(":")[1][:2]
    return timeinstr


# input your time here
# time = "11:00PM - 2:00AM" 
time = time.split("-")
time[0] = time[0].rstrip()
time[1] = time[1].lstrip()

timeinstr = "starttime " + get_24_format(time[0]) + " endtime " + get_24_format(time[1])

print(timeinstr)
0 голосов
/ 08 мая 2019

попробовать:

from datetime import *

time1 = "12:00PM - 2:00PM"

# Splitting the string into two parts (using the hyphen in between them) and storing them in two separate variables
# t1 = start time; t2 = end time
t1, t2 = time1.split(" - ")

# string manipulation to make the data feedable to datetime.strptime() 
t1 = t1.replace("AM", " AM").replace("PM", " PM")
t2 = t2.replace("AM", " AM").replace("PM", " PM")

# passing the data stored in our strings and converting it into 24hr format
t1 = datetime.strptime(t1, '%I:%M %p')
t1 = datetime.strftime(t1, "%H:%M")

t2 = datetime.strptime(t2, '%I:%M %p')
t2 = datetime.strftime(t2, "%H:%M")

print(t1)
print(t2)

выход:

12:00
14:00
...