복붙노트

[PYTHON] 초를시, 분, 초로 변환하는 방법은 무엇입니까?

PYTHON

초를시, 분, 초로 변환하는 방법은 무엇입니까?

몇 초 안에 정보를 반환하는 함수가 있지만 그 정보를 몇 시간 (분 : 초)으로 저장해야합니다.

파이썬에서 초를이 형식으로 변환하는 쉬운 방법이 있습니까?

해결법

  1. ==============================

    1.또는 다음을 수행 할 수 있습니다.

    또는 다음을 수행 할 수 있습니다.

    >>> import datetime
    >>> str(datetime.timedelta(seconds=666))
    '0:11:06'
    
  2. ==============================

    2.divmod () 함수를 사용하면 몫과 나머지를 생성하는 단일 부분 만 수행하므로 두 번의 수학 연산만으로 매우 신속하게 결과를 얻을 수 있습니다.

    divmod () 함수를 사용하면 몫과 나머지를 생성하는 단일 부분 만 수행하므로 두 번의 수학 연산만으로 매우 신속하게 결과를 얻을 수 있습니다.

    m, s = divmod(seconds, 60)
    h, m = divmod(m, 60)
    print "%d:%02d:%02d" % (h, m, s)
    
  3. ==============================

    3.나는 쉬운 방법으로 이름을 붙일 수는 없지만 적어도 구문을 기억할 수는 없다.하지만 time.strftime을 사용하는 것이 가능하다.

    나는 쉬운 방법으로 이름을 붙일 수는 없지만 적어도 구문을 기억할 수는 없다.하지만 time.strftime을 사용하는 것이 가능하다.

    >>> import time
    >>> time.strftime("%H:%M:%S", time.gmtime(666))
    '00:11:06'
    

    gmtime은 초를 strftime ()에 필요한 특수 튜플 형식으로 변환하는 데 사용됩니다.

  4. ==============================

    4.

    >>> import datetime
    >>> "{:0>8}".format(datetime.timedelta(seconds=66))
    >>> "{:0>8}".format(str(datetime.timedelta(seconds=66)))  # Python3
    >>> '00:01:06' # good
    

    과:

    >>> "{:0>8}".format(datetime.timedelta(seconds=666777))
    >>> "{:0>8}".format(str(datetime.timedelta(seconds=666777)))  # Python3
    >>> '7 days, 17:12:57' # nice
    

    without : '0> 8':

    >>> "{}".format(datetime.timedelta(seconds=66))
    >>> '0:01:06' # not HH:MM:SS
    

    과:

    >>> import time
    >>> time.strftime("%H:%M:%S", time.gmtime(666777))
    >>> '17:12:57' # wrong
    

    그러나:

    >>> "{:0>8}".format(datetime.timedelta(seconds=620000))
    >>> "{:0>8}".format(str(datetime.timedelta(seconds=620000)))  # Python3
    >>> '7 days, 4:13:20' # bummer
    
  5. ==============================

    5.이것은 내 속임수입니다.

    이것은 내 속임수입니다.

    import humanfriendly
    humanfriendly.format_timespan(secondsPassed)
    

    방문: https://humanfriendly.readthedocs.io/en/latest/#humanfriendly.format_timespan 더 많은 정보를 위해서.

  6. ==============================

    6.datetime.time 값을 가져와야하는 경우이 트릭을 사용할 수 있습니다.

    datetime.time 값을 가져와야하는 경우이 트릭을 사용할 수 있습니다.

    my_time = (datetime(1970,1,1) + timedelta(seconds=my_seconds)).time()
    

    timedelta를 시간에 추가 할 수는 없지만 datetime에 추가 할 수 있습니다.

    UPD : 동일한 기술의 또 다른 변형 :

    my_time = (datetime.fromordinal(1) + timedelta(seconds=my_seconds)).time()
    

    1 대신에 0보다 큰 숫자를 사용할 수 있습니다. 여기서 datetime.fromordinal은 항상 시간 구성 요소가 0 인 datetime 객체를 반환합니다.

  7. ==============================

    7.이것이 내가 얻은 방법이다.

    이것이 내가 얻은 방법이다.

    def sec2time(sec, n_msec=3):
        ''' Convert seconds to 'D days, HH:MM:SS.FFF' '''
        if hasattr(sec,'__len__'):
            return [sec2time(s) for s in sec]
        m, s = divmod(sec, 60)
        h, m = divmod(m, 60)
        d, h = divmod(h, 24)
        if n_msec > 0:
            pattern = '%%02d:%%02d:%%0%d.%df' % (n_msec+3, n_msec)
        else:
            pattern = r'%02d:%02d:%02d'
        if d == 0:
            return pattern % (h, m, s)
        return ('%d days, ' + pattern) % (d, h, m, s)
    

    몇 가지 예 :

    $ sec2time(10, 3)
    Out: '00:00:10.000'
    
    $ sec2time(1234567.8910, 0)
    Out: '14 days, 06:56:07'
    
    $ sec2time(1234567.8910, 4)
    Out: '14 days, 06:56:07.8910'
    
    $ sec2time([12, 345678.9], 3)
    Out: ['00:00:12.000', '4 days, 00:01:18.900']
    
  8. from https://stackoverflow.com/questions/775049/how-do-i-convert-seconds-to-hours-minutes-and-seconds by cc-by-sa and MIT license