1
22:11  +  22:22  =  44:33
varible_A = ('22:11')
varible_B = ('22:11')

左側の数字 (22) は分です。右側の数字 (11) は秒です。

取得する2つの数値を追加しようとしています

total = 44:22

これはおまけですが、本当に助かります*

たとえば、数字を時間のように扱うことは可能ですか...

varible_A = ('22:50')
varible_B = ('22:30')

私は取得したいです45:20

それ以外の

44:80
4

7 に答える 7

7

datetime.timedelta()期間をモデル化するために使用します。

from datetime import timedelta

def to_delta(value):
    minutes, seconds = map(int, value.split(':'))
    return timedelta(minutes=minutes, seconds=seconds)

var_a = to_delta('22:50')
var_b = to_delta('22:30')

var_a + var_b

timedelta()その後、オブジェクトを分 + 秒の表現に戻すことができます。

def to_minutes_seconds(delta):
    return '{:02.0f}:{:02.0f}'.format(*divmod(delta.total_seconds(), 60))

デモ:

>>> var_a = to_delta('22:50')
>>> var_b = to_delta('22:30')
>>> var_a + var_b
datetime.timedelta(0, 2720)
>>> to_minutes_seconds(var_a + var_b)
'45:20'

または、str()a の結果は次のようtimedeltaにフォーマットされHH:MM:SSます。

>>> str(var_a + var_b)
'00:45:20'

あなたのニーズにも合うかもしれません。1 時間を超えるデルタの場合、 と の間に違いがあることに注意してstr()くださいto_minutes_seconds()。前者は時間、分、秒を表示しますが、後者は分を表示するだけで、分の値が 60 を超える場合があります。24 時間を超えるデルタには、日数の追加プレフィックスが付けられます。

>>> str(timedelta(minutes=65, seconds=10))
'1:05:10'
>>> to_minutes_seconds(timedelta(minutes=65, seconds=10))
'65:10'
>>> str(timedelta(minutes=(60*24)+1, seconds=10))
'1 day, 0:01:10'
于 2013-05-17T14:39:33.397 に答える
2

これらは、1行の内包表記などではなく、オブジェクトで表す必要があると思います...そのため、次のようなクラスを使用することをお勧めします。

class Time(object):
    def __init__(self,minutes,seconds):
        self.minutes = minutes
        self.seconds = seconds
    def __add__(self,other):
        return Time(self.minutes+other.minutes,self.seconds+other.seconds)
    def __str__(self):
        return "{0}:{1}".format(self.minutes,self.seconds)

A = Time(22,11)
B = Time(22,22)
print(A+B)

プロデュース

>>> 
44:33
于 2013-05-17T14:42:12.257 に答える
2

同様の機能を使用できます

def add_with_column(*args):
    res = (0,0)
    for data in args:
        nums = map(int, data.split(':'))
        res = [i + j for i,j in zip(res, nums)]
    return ':'.join([str(res[0] + res[1]/60), str(res[1] % 60)])

>>> add_with_column('22:50', '22:30')
'45:20'
于 2013-05-17T14:44:32.433 に答える
1

このようなもの:

>>> def add_time(t1,t2):
    h1,s1 = map(int,t1.split(":"))
    h2,s2 = map(int,t2.split(":"))
    q,r = divmod(s1+s2, 60)
    return "{0}:{1:02d}".format( h1+h2+q, r)
... 
>>> add_time('22:30','22:50')
'45:20'
>>> add_time('22:30','22:30')
'45:00'
于 2013-05-17T14:39:15.880 に答える
1

時間をコンポーネントに分割したい

def split_time(time):
    return time.split(':')

そしてそれらを追加します

def add_times(time1, time2):
    minutes = time1[0] + time2[0]
    seconds = time1[1] + time2[1]
    return minutes, seconds

必要に応じてモジュラー演算を実行して「分を運ぶ」

def carry_the_minute(minutes, seconds):
    minutes += seconds / 60
    seconds %= 60
    return minutes, seconds

結果の表現を作成します

def represent_time(minutes, seconds):
    """Specifies two-character-wide seconds with leading 0."""
    return "{0}:{1:02d}".format(minutes, seconds)

すべてをまとめると、次のようになります。

def add_times(time1, time2):
    time1 = split_time(time1)
    time2 = split_time(time2)
    minutes, seconds = add_times(time1, time2)
    minutes, seconds = carry_the_minute(minutes, seconds)
    print represent_time(minutes, seconds)
于 2013-05-17T14:50:09.833 に答える
1

外部機械をインポートせずにこれを行う簡単な方法は次のとおりです。

def add(time1,time2):
    t1 = map(int,time1.split(':')) # t1[0] is minutes, t1[1] is seconds
    t2 = map(int,time2.split(':')) # map will apply int() to both elements of the array
    m = t1[0]+t2[0]+(t1[1]+t2[1])/60 # New minutes; recall that 70/60=1 for integer division
    s = (t1[1]+t2[1]) % 60 #new seconds
    return str(m)+":"+str(s)
add('22:30','22:50') # prints '45:20'

もちろん、いつでも datetime からインポートすることができます (実用的なアプリケーションにはおそらくそのほうがよいでしょう) が、時間操作を自分で実装したい場合は、このようにすることができます。

于 2013-05-17T14:46:24.863 に答える
1
a = '22:50'
b = '22:30'

def add_time(a, b):
    a = map(int, a.split(':'))
    b = map(int, b.split(':'))
    a[1] += b[1]
    a[0] += b[0] + a[1]//60
    a[1] %= 60
    return '{}:{}'.format(*a)

print a, b, add_time(a,b)
于 2013-05-17T14:47:09.230 に答える