

時間を演算して23400秒を超えているかどうかで処理を分岐させようとしています。  
端末によっては、下のコードでelse側に分岐することがあるようなのですが、原因がわかりません。  
バージョンはPython 3.9.7です。

[code]

    syukkin_time = "08:30"
    taikin_time = "15:00"
    syukkin_time = datetime.datetime.strptime(syukkin_time,'%H:%M')
    taikin_time = datetime.datetime.strptime(taikin_time,'%H:%M')
    working_time = taikin_time - syukkin_time
    working_time = working_time.total_seconds()
    
    if working_time >= 23400.0:
      print('6時間30分以上だよ！')
    else:
      print('6時間30分未満だよ！')
    
[/code]


CC BY-SA 4.0
2022-07-21T00:28:16.430
90116
2022-07-21T08:38:43.910
2022-07-21T05:25:56.843
3060
52185
question
python python3
時間の演算結果を元にした if 文の判定が、端末によって結果が異なる


原因は分かりませんが, `syukkin_time = datetime.datetime.strptime(syukkin_time,'%H:%M')`
だと, 日付(1900, 1, 1) が付きます。  
環境によっては(例えばタイムゾーンなど), 時間の演算に支障をきたすことも。

文字列から秒に変換するのなら, 過去の質問にもあったはずなので調べてみるとよいでしょう

以下は pandas使う方法

[code]

    >>> import pandas as pd
    >>> t1 = pd.to_timedelta('08:30:00')
    >>> t2 = pd.to_timedelta('15:00:00')
    >>> t2 - t1
    Timedelta('0 days 06:30:00')
    >>> (t2-t1).seconds
    23400
    
[/code]


CC BY-SA 4.0
2022-07-21T08:38:43.910
90127
2022-07-21T08:38:43.910
43025
90116
answer