2017-03-23 6 views
0

Ich bin von einer eigenartigen Situation, in der ich Epochenzeitstempel meiner Eingabedateien erstelle, um nach Duplikaten zu suchen, ratlos. Nachdem ich den Code ausgeführt habe, erhalte ich doppelte Fehler, obwohl es in Wirklichkeit keine Duplikate gibt.Python: Problem mit datetime.timestamp | Datum März 26, 2017, 01:55, 02:55, 03:55

INPUT 1 (CSV mit Zaun Separator-Datei):

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 

Dubletten in INPUT 1 (Ergebnis aus meinem Code) gefunden:

(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 mit Zaun Separator-Datei):

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 

Dubletten in INPUT gefunden 2 (Ergebnis aus meinem Code):

(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') 

Beim Debugging habe ich 3 verschiedene Zeiträume gefunden, die dieses Problem verursacht haben.

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

Ich habe versucht, dieses Problem direkt in Python zu replizieren und damit den Code unten erstellt:

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()) 

Noch verwirrende, Sublime Text 2 Python IDE und IDLE gibt 2 verschiedene Duplikate.

Ausgabe von 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] 

Ausgabe von 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 
>>> 

Natürlich habe ich mit einem anderen Code versuchen könnte, die Epoche Zeit zu bekommen, aber ich wollte wissen, Warum tritt dieses Problem auf?

Antwort

0

Wenn ich Ihren Code laufen lasse, bekomme ich 3 verschiedene Zeitstempel in 3.5.3 und 3.6.1.

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

Als ich das Datum 12.03, die ‚Feder nach vorne‘ Datum in den USA zum Ändern der Zeit ändern, erhalte ich unterschiedliche Duplikate mit 3.5 und 3.6 auf.

# 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 

Meine Schlussfolgerung ist, dass a) am kommenden Sonntag ist das 'Feder nach vorne' Datum in Ihrem Land, und b) Sublime Text läuft 3.5. Die Methode zur Disambiguierung mehrdeutiger (wiederholter) Zeiten wurde in 3.6 geändert. Siehe doc bis datetime.timestamp.

+0

Diese Information ist neu für mich. Vielen Dank für Ihr Feedback. –

Verwandte Themen