2017-03-23 10 views
0

重複しているかどうかを確認するために入力ファイルのエポックタイムスタンプを作成しているという特異な状況に悩まされています。コードを実行した後、実際には重複はありませんが、重複エラーが発生します。Python:datetime.timestampに関する問題|日付2017年3月26日01:55 02:55 03:55

INPUT 1(CSVがフェンスセパレータファイル):INPUT 1に見出さ

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 

重複が(私のコードから生じる):

(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がフェンスセパレータを持つファイル): INPUT 2で見つかった

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 

重複(私のコードに起因する):

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

を、崇高テキスト2 PythonのIDEとIDLEは、2つの異なる重複を与えています。

崇高テキスト2 IDEからの出力:IDLEから

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] 

出力:もちろん

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

が、私はエポックタイムを取得するために別のコードを使用して試みることができるが、私は知りたいと思いましたなぜこの問題が起こるのか。

答えて

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 

私の結論は、次の日曜日はあなたの国の「春の前進」日であり、b)崇高なテキストは3.5です。あいまい(繰り返し)時間を明確にする方法は3.6で変更されました。 docを参照してくださいdatetime.timestamp。

+0

この情報は私にとってニュースです。このフィードバックを共有していただきありがとうございます。 –

関連する問題