2015-08-28 3 views
1

У меня есть текстовый файл, который нужно открыть в python и взять дату и время (в заголовке), а затем изменить его на секунды (временная метка). но результат не совпадает с онлайн-сайтами. Код:Преобразование даты и времени в метку времени

with open('sample for north - Kopie.txt', "r") as f: 
    content = f.readlines() 

    for x in content : 
     day = float (content [0][:2]) 
     month = float (content [0][3:5]) 
     year = float (content [0][6:10]) 
     hour = float (content [0][10:13]) 
     minn = float (content [0][14:16]) 
     second = float (content [0][17:19]) 
     time = float ((((year-1970)*31556926)+((month-1)*2629743)+((day-1)*86400)+((hour)*3600)+((minn)*60)+second)) 

для 13.07.2015 9:38:17 результатом программы является но результат веб-сайтов .

+0

Что 're'? Кроме того, связанный с файлом код кажется несущественным для вопроса. Не могли бы вы просто создать функцию для обработки строки? –

+0

У вас есть високосные годы и т. Д.? –

+0

@PeterWood Мне очень жаль. Исправленный. Я только что нашел сайты, которые говорят, что каждый год составляет 31556926 секунды, а каждый месяц составляет 2629743 секунды и ... и просто помещаем его в уравнение. – kian

ответ

2

Вы можете использовать модуль времени:

import time 

>>>print(time.mktime(time.strptime("13.07.2015 09:38:17", "%d.%m.%Y %H:%M:%S"))) 
1436769497.0 
+0

это хорошая идея. Но если вы поместите результат в (http://www.epochconverter.com/), он даст 07:38:17 – kian

+2

Это потому, что временная метка, основанная на моем часовом поясе компьютера, и ваш компьютер на вашем компьютере часовой пояс. – mmachine

+0

это правильно. последний вопрос: если я хочу объявить время точно так же, как веб-сайт, что мне делать? – kian

1

Есть две части:

  1. Преобразование времени строку в объект времени в Python. Вы можете использовать .strptime() для этого:

    from datetime import datetime 
    
    dt = datetime.strptime("13.07.2015 09:38:17", "%d.%m.%Y %H:%M:%S") 
    # -> datetime.datetime(2015, 7, 13, 9, 38, 17) 
    
  2. Преобразование времени объект в (POSIX) метки времени (Unix времени).1436780297 результат наводит на мысль, что ваше время ввода в UTC, и поэтому вы можете использовать calendar.timegm(), чтобы получить временную метку:

    from calendar import timegm 
    
    timestamp = timegm(dt.timetuple()) 
    # -> 1436780297 
    

См Converting datetime.date to UTC timestamp in Python

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