Конвертировать военное время из текстового файла в стандартное время Python - PullRequest
2 голосов
/ 11 мая 2011

У меня проблемы с логикой о том, как преобразовать военное время из текстового файла в стандартное время и отбросить все неправильные значения.Я только дошел до того, что у пользователя запрашивается входной файл, а содержимое отображается из введенного текстового файла.Пожалуйста, помогите мне

Ответы [ 3 ]

3 голосов
/ 11 мая 2011

Python's datetime.time объекты используют "военное" время.Вы можете сделать что-то вроде этого:

>>> t = datetime.time(hour=15, minute=12)
>>> u = datetime.time(hour=16, minute=44)
>>> t = datetime.datetime.combine(datetime.datetime.today(), t)
>>> t
datetime.datetime(2011, 5, 11, 15, 12)
>>> u = datetime.datetime.combine(datetime.datetime.today(), u)
>>> t - u
datetime.timedelta(-1, 80880)

С небольшим поворотом конверсии, подобные описанным вами, должны быть довольно простыми.


Не видя никакого кода, трудно сказать, что именно вы хотите.Но я предполагаю, что вы могли бы сделать что-то вроде этого:

raw_time = '2244'
converted_time = datetime.time(hour=int(raw_time[0:2]), minute=int(raw_time[2:4]))
converted_time = datetime.datetime.combine(datetime.datetime.today(), converted_time)

Теперь вы можете работать с converted_time, добавляя и вычитая timedelta объекты.Кстати, вы можете создать timedelta примерно так:

td = datetime.timedelta(hours=4)

Полный список возможных аргументов ключевого слова для конструктора timedelta: здесь .

1 голос
/ 11 мая 2011

Это не верный ответ, как два других, но философия, которую я использую при работе с датами и временем в python: преобразование в объект datetime как можно скорее после получения от пользователя, и преобразование обратно в строку только привы представляете значение обратно пользователю.

Большая часть математики даты / времени, которая вам понадобится, может быть выполнена объектами datetime, а их кузенами - объектами timedelta.Если вам не нужны соотношения timedeltas к другим timedeltas, но это уже другая история.

1 голос
/ 11 мая 2011
from dateutil.parser import parse
time_today = parse("08:00")

from dateutil.relativedelta import relativedelta
required_time = time_today-relativedelta(minutes=35)

print required_time
datetime.datetime(2011, 5, 11, 7, 25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...