Python 미래에 5 분 동안 유닉스 타임 스탬프 생성 seconds_in_a_day = 60

앞으로 5 분 안에 “Expires”값을 만들어야하지만 UNIX 타임 스탬프 형식으로 제공해야합니다. 나는 지금까지 이것을 가지고 있지만 해킹처럼 보인다.

def expires():
    '''return a UNIX style timestamp representing 5 minutes from now'''
    epoch = datetime.datetime(1970, 1, 1)
    seconds_in_a_day = 60 * 60 * 24
    five_minutes = datetime.timedelta(seconds=5*60)
    five_minutes_from_now = datetime.datetime.now() + five_minutes
    since_epoch = five_minutes_from_now - epoch
    return since_epoch.days * seconds_in_a_day + since_epoch.seconds

타임 스탬프 변환을 수행하는 모듈이나 함수가 있습니까?



답변

다른 방법은 다음을 사용하는 것입니다 calendar.timegm.

future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
return calendar.timegm(future.timetuple())

또한 %s플래그 보다 이식성이 뛰어납니다 strftime(Windows에서는 작동하지 않음).


답변

이제 Python> = 3.3 에서는 timestamp () 메서드 를 호출하여 타임 스탬프를 부동 소수점으로 가져올 수 있습니다.

import datetime
current_time = datetime.datetime.now(datetime.timezone.utc)
unix_timestamp = current_time.timestamp() # works if Python >= 3.3

unix_timestamp_plus_5_min = unix_timestamp + (5 * 60)  # 5 min * 60 seconds

답변

이걸 찾았고 더 짧았습니다.

import time
def expires():
    '''return a UNIX style timestamp representing 5 minutes from now'''
    return int(time.time()+300)

답변

이것이 당신이 필요로하는 것입니다 :

import time
import datetime
n = datetime.datetime.now()
unix_time = time.mktime(n.timetuple())

답변

형식 문자열을 datetime.strftime사용하여 Epoch 형식으로 시간을 얻는 데 사용할 수 있습니다 %s.

def expires():
    future = datetime.datetime.now() + datetime.timedelta(seconds=5*60)
    return int(future.strftime("%s"))

참고 : 이것은 Linux에서만 작동 하며이 방법은 표준 시간대에서는 작동하지 않습니다.


답변

다음 datetime은 datetime 객체에서 posix 타임 스탬프로 변환 하는 덜 깨진 기반 솔루션입니다.

future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
return (future - datetime.datetime(1970, 1, 1)).total_seconds()

Python에서 datetime.date를 UTC 타임 스탬프변환 에서 자세한 내용을 참조하십시오 .


답변

def in_unix(input):
  start = datetime.datetime(year=1970,month=1,day=1)
  diff = input - start
  return diff.total_seconds()