Проблема дельты времени в Хакерранке не дает хорошего ответа / Python 3 - PullRequest
1 голос
/ 26 октября 2019

Задача хакерранка находится по следующему адресу: https://www.hackerrank.com/challenges/python-time-delta/problem

Я получил правильный тестовый пример 0, но на веб-сайте говорится, что у меня неправильные ответы для тестового примера 1 и 2, но в моем pycharm я скопировалвеб-сайт ожидал вывода и сравнивал с моим выводом, и они были точно такими же.

Пожалуйста, посмотрите на мой код.

#!/bin/pyth
# Complete the time_delta function below.
from datetime import datetime
def time_delta(tmp1, tmp2):
    dicto = {'Jan':1, 'Feb':2, 'Mar':3,
         'Apr':4, 'May':5, 'Jun':6,
         'Jul':7, 'Aug':8, 'Sep':9,
         'Oct':10, 'Nov':11, 'Dec':12}

    # extracting t1 from first timestamp without -xxxx
    t1 = datetime(int(tmp1[2]), dicto[tmp1[1]], int(tmp1[0]), int(tmp1[3][:2]),int(tmp1[3][3:5]), int(tmp1[3][6:])) 

    # extracting t1 from second timestamp without -xxxx
    t2 = datetime(int(tmp2[2]), dicto[tmp2[1]], int(tmp2[0]), int(tmp2[3][:2]), int(tmp2[3][3:5]), int(tmp2[3][6:])) 

    # converting -xxxx of timestamp 1
    t1_utc = int(tmp1[4][:3])*3600 + int(tmp1[4][3:])*60 

    # converting -xxxx of timestamp 2
    t2_utc = int(tmp2[4][:3])*3600 + int(tmp2[4][3:])*60 

    # absolute difference
    return abs(int((t1-t2).total_seconds()-(t1_utc-t2_utc))) 

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

    t = int(input())

    for t_itr in range(t):
        tmp1 = list(input().split(' '))[1:]
        tmp2 = list(input().split(' '))[1:]
        delta = time_delta(tmp1, tmp2)
        print(delta)

1 Ответ

0 голосов
/ 26 октября 2019
t1_utc = int(tmp1[4][:3])*3600 + int(tmp1[4][3:])*60

Для часового пояса, например +0715, вы правильно добавляете «7 часов секунд» и «15 минут секунд»

Для часового пояса, например -0715, добавляете «-7 часов секунд »и« +15 минут секунд », что приводит к -6ч45м вместо -7ч15м.

Вам необходимо либо использовать один и тот же« знак »для обеих частей, либо применить знак впоследствии.

...