Time Delta - Не уверен, почему моя функция не будет выводить более одного значения - PullRequest
0 голосов
/ 08 мая 2019

У меня проблема с HackerRank (Time Delta). Кажется, моя функция работает отлично, но когда я запускаю код, он выводит только одно значение, когда он должен выводить несколько.

Пример ввода:

2
Sun 10 May 2015 13:54:36 -0700
Sun 10 May 2015 13:54:36 -0000
Sat 02 May 2015 19:54:36 +0530
Fri 01 May 2015 13:54:36 -0000

Ожидаемый результат:

25200
88200

Мой код:

#!/bin/python3

import math
import os
import random
import re
import sys
import datetime as dt

# Complete the time_delta function below.
def time_delta(t1, t2):
    t1 = t1.split()
    t2 = t2.split()
    day1 = str(t1[0] + ' ' + t1[2] + ' ' + t1[1] + ' ' + t1[3] + ' ' + t1[4] + ' ' + t1[5])
    day2 = str(t2[0] + ' ' + t2[2] + ' ' + t2[1] + ' ' + t2[3] + ' ' + t2[4] + ' ' + t2[5])
    datetime_t1 = dt.datetime.strptime(day1, '%a %b %d %Y %H:%M:%S %z')
    datetime_t2 = dt.datetime.strptime(day2, '%a %b %d %Y %H:%M:%S %z')
    time_diff = datetime_t1 - datetime_t2
    print(int(time_diff.total_seconds()))


if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    t = int(input())

    for t_itr in range(t):
        t1 = input()

        t2 = input()

        delta = time_delta(t1, t2)

        fptr.write(delta + '\n')

    fptr.close()

Любая помощь / совет, который может быть предложен, будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 мая 2019

ваш формат для анализа этих времен должен быть '%a %d %b %Y %H:%M:%S %z':

from datetime import datetime

fmt = '%a %d %b %Y %H:%M:%S %z'
t1 = datetime.strptime('Sun 10 May 2015 13:54:36 -0700', fmt)
t2 = datetime.strptime('Sun 10 May 2015 13:54:36 -0000', fmt)
print((t1 - t2).total_seconds())
# 25200.0

, вы можете захотеть взглянуть на strftime() и strptime() поведение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...