質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

2236閲覧

Python 25時間表記の扱い

yuyu127

総合スコア27

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2018/02/24 13:49

お世話になっております。

HH:MM表記の時間を分に変換しようと思います。
しかし25時間表記の場合、うまく変換できません。

何かいい方法を教えていただけないでしょうか。

Python3

1t = "24:25" 2 3from datetime import datetime 4s = datetime.strptime(t,"%H:%M") 5 6result = s.hour*60 + s.minute 7 8print(result)

エラー:
ValueError: time data '24:25' does not match format '%H:%M'

よろしくお願いします。

Yuno_556👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

24時間表記の仕様によって対応は異なると思います。
<ケース1> スタート00:01 エンド24:00 以後、00:01にもどる

この場合、24:00を00:00に変換してしまうと本来であれば、スタート時間を基準にして1440分経っているにも関わらず、0分として計算されてしまいます。したがって、24:00の場合は1440分経過したことにするコードを書き加えたほうがいいでしょう。

python

1t = "24:00" 2 3from datetime import datetime 4 5if t == '24:00' : 6 result = 1440 7else : 8 s = datetime.strptime(t,"%H:%M") 9 result = s.hour*60 + s.minute 10 11print(result)

<ケース2> スタート00:00 エンド24:59(00:00~00:59と24:00~24:59は時間だけでいうと同じものを指すが、24時間経過後の〇分を明示的に表すような時刻表示)

この場合も同様で24:15は、1440 + 15 経過しているとみなすべきなので、この条件処理を追記する必要があるでしょう。

python

1t = "24:25" 2 3hour, minute = t.split(":") 4if hour == '24' : 5 result = 1440 + int(minute) 6else: 7 result = int(hour)*60 + int(minute) 8 9print(result)

理屈だけでいうと、スタート01:00 エンド24:59というケースもあり得ます。この場合は、基準が01:00なのであることを加味しないと正しい換算になりません。

投稿2018/02/25 00:58

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuyu127

2018/02/25 10:48

R.Shigemori様 詳細にご回答ありがとうございました。 まだ全てを理解できてはいませんが、参考にさせていただきます。
guest

0

Python

1t = "24:25" 2hour, minute = t.split(":") 3 4result = int(hour)*60 + int(minute) 5 6print(result)

投稿2018/02/24 14:29

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuyu127

2018/02/25 10:50

otn様 ご回答ありがとうございます。 文字列として扱うことで回避することができますね。 大変参考になりました。
guest

0

Java -> Pythonの時刻変換でハマりますよね、そこ。私は、

python

1try: 2 datetime.strptime(...) 3except ValueError: 4 t = t.replace('24:', '00:') 5 datetime.strptime(...)

みたいに、ValueErrorが発生した時だけ24時を0時に変換するフォールバック方式を採用しました。

ご参考までに。

投稿2018/02/24 23:56

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuyu127

2018/02/25 10:49

YouheiSakurai様 ご回答ありがとうございます。 ハマってしまいました。 エラー処理はいいですね。参考にさせていただきます。
guest

0

https://teratail.com/questions/103361

参考になるかと思います。

投稿2018/02/24 14:23

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuyu127

2018/02/25 10:51

mkgrei様 情報ありがとうございます。 確認させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問