3

私は時間と分で時間を見つけようとしていますが、それを行う方法を知っている唯一の方法は、以下で行ったことを使用することです。以下は私の出力でもあり、ご覧のとおり、プログラムは秒と小数点以下を返します。

コード:

def commercial_time (distance, speed_of_commercial):
    time = distance / speed_of_commercial
    seconds = time * 3600
    real = (datetime.timedelta(seconds = seconds))
    return real

出力:

9:46:04.352515

私の質問は、その「.352515」を取り除く方法はありますか? 可能であれば、秒も非表示にしたいと思います。

4

2 に答える 2

6

timedelta手動でフォーマットします。

def custom_format(td):
    minutes, seconds = divmod(td.seconds, 60)
    hours, minutes = divmod(minutes, 60)
    return '{:d}:{:02d}'.format(hours, minutes)

デモ:

>>> from datetime import timedelta
>>> def custom_format(td):
...     minutes, seconds = divmod(td.seconds, 60)
...     hours, minutes = divmod(minutes, 60)
...     return '{:d}:{:02d}'.format(hours, minutes)
... 
>>> custom_format(timedelta(hours=9, minutes=46, seconds=4, microseconds=352515))
'9:46'

このメソッド属性を無視し.daysます。24 時間を超えるタイムデルタがある場合は、次を使用します。

def custom_format(td):
    minutes, seconds = divmod(td.seconds, 60)
    hours, minutes = divmod(minutes, 60)
    formatted = '{:d}:{:02d}'.format(hours, minutes)
    if td.days:
        formatted = '{} day{} {}'.format(
            td.days, 's' if td.days > 1 else '', formatted)
    return formatted

デモ:

>>> custom_format(timedelta(days=42, hours=9, minutes=46, seconds=4, microseconds=352515))
'42 days 9:46'
>>> custom_format(timedelta(days=1, hours=9, minutes=46, seconds=4, microseconds=352515))
'1 day 9:46'
>>> custom_format(timedelta(hours=9, minutes=46, seconds=4, microseconds=352515))
'9:46'
于 2013-10-07T20:51:11.730 に答える
0

時差を で文字列に変換しstr()、小数点以下を で区切り.split('.')ます。次に、小数点以下の最初の部分を次のように保持し[0]ます。

最後の行に唯一の違いがある例:

import time
import datetime

def commercial_time (distance, speed_of_commercial):
    time = distance / speed_of_commercial
    seconds = time * 3600
    real = (datetime.timedelta(seconds = seconds))
    return str(real).split('.')[0]

それから:

print( commercial_time( 10 , 1.025 ) )

生成:

9:45:21
于 2020-05-11T00:24:33.230 に答える