実現したいこと
pythonにおける時間の出力に関する構文を理解したい
前提
以下のソースコードは、レンタルサイクルの利用時間から、請求金額と利用明細を出力するためのコードです。
※初心者なので、質問をうまく言語化出来ていないかもしれないのですが、温かい目でご回答いただけると幸いです。
start = datetime.strptime(f"{cols[0]} {cols[1]}", "%Y/%m/%d %H:%M")
details.append(f"{start:%m-%d, %H:%M}, {end:%H:%M}, {rental_hours}時間")
上記、二つのコードを見比べたときに、両者とも時間を出力するフォーマットではあるものの、
前者は"{cols[0]} {cols[1]}"%とY/%m/%d %H:%Mを繋ぐ間に”,”を書いています。
後者はstartと%m-%dを繋ぐ間に、”:”を書いています。
同じ時間の出力でも、フォーマットが違う理由を教えていただきたいです。
該当のソースコード
from datetime import datetime # 1時間あたりのレンタル代金 RENTAL_PRICE = 400 # レンタル時間の合計計算用変数 total_time = 0 details = [] # ファイル「input/bicycle.csv」を読み込む with open("input/bicycle.csv", encoding="utf-8") as f: # ヘッダー行を読み飛ばす f.readline() for row in f: # 末尾の改行を除去 row = row.rstrip() # カンマ区切りで各値を分割する cols = row.split(",") # レンタル開始日時 start = datetime.strptime(f"{cols[0]} {cols[1]}", "%Y/%m/%d %H:%M") # レンタル終了日時 end = datetime.strptime(f"{cols[0]} {cols[2]}", "%Y/%m/%d %H:%M") # レンタル時間を計算する rental_hours = (end - start).total_seconds() / 3600 # 合計時間に加算する total_time += rental_hours # 出力用文字列作成と追加 details.append(f"{start:%m-%d, %H:%M}, {end:%H:%M}, {rental_hours}時間") # 請求金額を計算する invoice = int(total_time * RENTAL_PRICE) # 合計レンタル時間を表示 print(f"合計レンタル時間は、{total_time}時間") # 請求金額を表示 print(f"請求金額は、{invoice:,}円") print("---レンタルの詳細---") print("日付, 開始時刻, 終了時刻, レンタル時間") for detail in details: print(detail)
python

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。