Python:datetime.timestamp的问题|日期2017年3月26日,01:55,02:55,03:55

时间:2017-03-23 13:08:46

标签: python-3.x sublimetext2 python-idle

我被一种奇怪的情况所困扰,我正在创建输入文件的纪元时间戳以检查重复项。在我运行代码之后,我得到了重复的错误,尽管实际上并没有重复。

INPUT 1(带栅栏分隔符的CSV文件):

1:55|The Chris Ramsey Show|||3/26/2017
2:25|South Park|The Biggest Douche in the Universe|615|3/26/2017
2:55|South Park|My Future Self 'n' Me|616|3/26/2017

在INPUT 1中找到的重复项(来自我的代码):

(i.e., programs with the same start time and date):
(1490489700, '01:55', 'The Chris Ramsey Show', '', '03/26/2017')
(1490489700, '02:55', 'South Park', "My Future Self 'n' Me", '03/26/2017')

INPUT 2(带栅栏分隔符的CSV文件):

3/26/2017|2:55|The Chris Ramsey Show|30|||103|Episode 3
3/26/2017|3:25|South Park|30|||615|The Biggest Douche in the Universe
3/26/2017|3:55|South Park|20|||616|My Future Self n' Me

在INPUT 2中找到重复项(来自我的代码):

(i.e., programs with the same start time and date):
(1490493300, '02:55', 'The Chris Ramsey Show', 'Episode 3', '03/26/2017')
(1490493300, '03:55', 'South Park', "My Future Self n' Me", '03/26/2017')

经过调试,我发现导致此问题的3个不同时间段。

03/26/2017 01:55
03/26/2017 02:55
03/26/2017 03:55

我尝试直接在Python中复制此问题,因此创建了以下代码:

import datetime
t1 = datetime.datetime(2017, 3, 26, 1, 55)
t2 = datetime.datetime(2017, 3, 26, 2, 55)
t3 = datetime.datetime(2017, 3, 26, 3, 55)
print(t1, t1.timestamp())
print(t2, t2.timestamp())
print(t3, t3.timestamp())

更令人困惑的是,Sublime Text 2 Python IDE和IDLE提供了2个不同的重复项。

Sublime Text 2 IDE的输出:

2017-03-26 01:55:00 1490489700.0
2017-03-26 02:55:00 1490489700.0
2017-03-26 03:55:00 1490493300.0
[Finished in 0.1s]

来自IDLE的输出:

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
================== RESTART: C:\Users\<>\Desktop\test.py ==================
2017-03-26 01:55:00 1490489700.0
2017-03-26 02:55:00 1490493300.0
2017-03-26 03:55:00 1490493300.0
>>> 

当然,我可以尝试使用不同的代码来获取纪元时间,但我想知道为什么会出现这个问题。

1 个答案:

答案 0 :(得分:0)

当我按原样运行代码时,我在3.5.3和3.6.1中都获得了3个不同的时间戳。

2017-03-26 01:55:00 1490507700.0
2017-03-26 02:55:00 1490511300.0
2017-03-26 03:55:00 1490514900.0

当我将日期更改为3-12,即美国更改时间的“春季前进”日期时,我得到的重复数分别为3.5和3.6。

# 3.5
2017-03-12 01:55:00 1489301700.0
2017-03-12 02:55:00 1489301700.0
2017-03-12 03:55:00 1489305300.0

# 3.6
2017-03-12 01:55:00 1489301700.0
2017-03-12 02:55:00 1489305300.0
2017-03-12 03:55:00 1489305300.0

我的结论是:a)下个星期天是你所在国家的“春季前进”日期,b)Sublime Text运行3.5。消除模糊(重复)次数的方法在3.6中有所改变。请参阅doctime datetime.timestamp。