将日期和时间转换为时间戳

问题描述:

我有一个文本文件,希望在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)) 

2015年7月13日计划的9时38分17秒结果是但网站结果是。

+0

什么是're'?此外,与文件相关的代码似乎与问题无关。你可以创建一个函数来处理一条线吗? –

+0

你是否考虑了闰年等? –

+0

@PeterWood我真的很抱歉。纠正。我刚刚发现网站说,每年是31556926秒,每个月是2629743秒......并且只是把它放在等式中。 – kian

您可以使用时间模块:

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. 转换时间字符串到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