前提・実現したいこと
'プログラム冒頭取得した時間 - プログラム終盤取得した時間'
この、実行時間(と名付けます)というものを求めたいです。
もっと便利な方法はきっと他にもあるのですが、
(よくわからなかったので)
今回は秒単位での差分を求め、
それから(時間,分)に変換しようと頑張ってみました。
発生している問題・エラーメッセージ
こうして求めた実行時間(仮名です)なのですが...
どう考えても結果がおかしいのです。
例えば5分くらいしかたっていないのに、
180時間と-22300分経過したようになっています。
これは計算に致命的な間違いがあるからだと思うんです。
そこで、数ある問題点を指摘していただきたいのです。
それから、秒単位に換算しなくとも
もっと良い方法があるのであれば教えてほしいです!!
該当のソースコード
python
1import datetime 2start=datetime.datetime.now() 3""" 4ここにコード 5くどくどくどくど... 6(質問との関連は無いため省略しました。) 7""" 8end=datetime.datetime.now() 9#ここからです。 10#'end-start'が知りたいのですが、 11#そのままではどうやら無理みたいなので、秒単位に換算してから差分を求めることにしたのですが... 12startlist=list() 13for el in _now_: 14 startlist.append(el) 15startyear=int(startlist[0])*365*24*60*60 16startmonth=int(startlist[1])*60*60*24*30 17startday=int(startlist[2])*60*60*24 18starthour=int(startlist[3])*60*60 19startminute=int(startlist[4])*60 20starttime=startyear+startmonth+startday+starthour+startminute 21#starttimeにはプログラム冒頭取得した時間[秒]が格納されていると信じています 22#同様に、endtimeも求めに行きます。 23_end_=end.timetuple() 24endlist=list() 25for el in _end_: 26 endlist.append(el) 27endyear=int(endlist[0])*365*24*60*60 28endmonth=int(endlist[1])*60*60*24*30 29endday=int(endlist[2])*60*60*24 30endhour=int(endlist[3])*60*60 31endminute=int(endlist[4])*60 32endtime=endyear+endmonth+endday+endhour+endminute 33#このendtimeでも、プログラム終盤取得した時刻[秒]が格納されていたらいいな..と思います 34#気を取り直して、続きです。 35used_sec=endtime-starttime 36#これでused_secには実行時間(と名付けたもの)[秒]が入っているんです(震) 37#そこで、求めた時間の単位[秒]を[時間][分]..と整数に変換していきます 38#実行時間の出力は[時間][分]の単位で行います。 39used_hour=int(used_sec/60*60) 40used_minute=int((used_sec-used_hour*60*60)/60) 41#そうすると、かかった時間が[hour][minute]の単位で得られるわけですね~ 42#しかし、自分は何をしているんだろうというのが正直なところです。 43#どこを見ても、間違っているとしか思えません。 44result=f"{used_hour}[hour] + {sed_minute}[minute]" 45input(result)
補足情報(FW/ツールのバージョンなど)
Windows10, atom
稚拙なコードで気分を悪くされた方には申し訳ないです。
end - start で秒単位の差分が取れると思うのですが、それではダメなのでしょうか?(コードは「#ここからです。」までしか見てません)
_now_の定義がないですね。
end-startのところend-nowとして盲点でした..しかし、取得したtimedelta型の処理がわかりませんでした。
nowをstartに書き換える際に残ってしまったものと思われます。ご指摘ありがとうございます。
「取得したtimedelta型の処理がわかりませんでした」←求めた差分をどうしたいのでしょうか?表示するだけなら(LouiS0616さんの回答にもありますが) print(end - start) でいいですが。
取得した差分[秒]は'x[時間]y[分]'のような形での出力したいです。
回答2件
あなたの回答
tips
プレビュー