2009-12-27 3 views
9
enter time-1 // eg 01:12 
enter time-2 // eg 18:59 

calculate: time-1 to time-2/12 
// i.e time between 01:12 to 18:59 divided by 12 

Как это сделать в Python. Я новичок, поэтому я не знаю, с чего начать.Вычислить время между временем-1 и временем-2?

Отредактировано для добавления: я не хочу таймер. И время-1, и время-2 вводятся пользователем вручную.

Заранее за вашу помощь.

ответ

15

datetime и timedelta класс от встроенного модуля datetime - это то, что вам нужно.

from datetime import datetime 

# Parse the time strings 
t1 = datetime.strptime('01:12','%H:%M') 
t2 = datetime.strptime('18:59','%H:%M') 

# Do the math, the result is a timedelta object 
delta = (t2 - t1)/12 
print(delta.seconds) 
+0

delta = (t2 - t1)/12 ТипError: неподдерживаемый тип операндов для /: 'datetime.timedelta' и 'int' – 3zzy

+0

Это нормально в python 2.6 Но вы всегда можете преобразовать объект timedelta в целое число и выполните математику, например: delta.seconds/12 – iamamac

5

Вот таймер для выполнения кода синхронизации. Возможно, вы можете использовать его для чего хотите. time() возвращает текущее время в секундах и микросекундах с 1970-01-01 00:00:00.

from time import time 
t0 = time() 
# do stuff that takes time 
print time() - t0 
+0

Nah, я хочу, чтобы вычислить время между временем 1 и временем -2, оба введены вручную. – 3zzy

+0

То, что я имел в виду! .... приветствует это! – Arkapravo

0

Предполагая, что пользователь вводит строки как "01:12", вам нужно конвертировать (а также Validate) эти строки в число минут с момента 00:00 (например, "01:12" является 1*60+12, или 72 минут), а затем вычесть один от другого. Затем вы можете преобразовать разницу в минутах обратно в строку формы hh:mm.

6

Простейшие и наиболее прямой может быть что-то вроде:

def getime(prom): 
    """Prompt for input, return minutes since midnight""" 
    s = raw_input('Enter time-%s (hh:mm): ' % prom) 
    sh, sm = s.split(':') 
    return int(sm) + 60 * int(sh) 

time1 = getime('1') 
time2 = getime('2') 

diff = time2 - time1 

print "Difference: %d hours and %d minutes" % (diff//60, diff%60) 

Например, типичный пробег может быть:

$ python ti.py 
Enter time-1 (hh:mm): 01:12 
Enter time-2 (hh:mm): 18:59 
Difference: 17 hours and 47 minutes 
+1

+1, потому что это лучший способ для кого-то, изучающего python, по сравнению с использованием datetime и timedelta. Я бы предпочел более выразительные имена переменных, чем «s», «sh» и «sm». Алекс, зачем использовать переменную 'prom'? Почему бы не вызвать функцию без аргументов? –

+1

@Raja, хе, я хотел дать разные подсказки в двух случаях, но потом я забыл использовать 'prom' в подсказке - исправлено. Что касается имен переменных, для переменных с крайне малой областью, крошечные имена подходят - тем, кого научили называть такие переменные с двумя строками, «stringAsInputByTheUser», «hours_in_string_form» и т. П., И никогда не подвергались этому важному разграничение по области охвата, должно начать подвергаться этому вопросу. –

Смежные вопросы