programing

Python 향후 5분 후 unix 타임스탬프 생성

nicescript 2023. 1. 3. 21:50
반응형

Python 향후 5분 후 unix 타임스탬프 생성

5분 후에 "Expires" 값을 작성해야 하는데 UNIX Timestamp 형식으로 입력해야 합니다.아직까지는 가지고 있지만 해킹인 것 같아요.

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

타임스탬프를 변환하는 모듈이나 기능이 있나요?

또 다른 방법은 다음과 같습니다.

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에서만 작동하며, 이 방법은 시간대에서는 작동하지 않습니다.

여기 덜 부서진 게 있어요datetimedatetime 객체에서 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()

중요한 것은 변환을 시작하기 전에 사용하고 있는 모든 날짜가 utc 시간대에 있는지 확인하는 것입니다.적절한 방법에 대해서는, http://pytz.sourceforge.net/ 를 참조해 주세요.utc로 정규화함으로써 서머타임 전환의 애매함을 해소할 수 있습니다.그런 다음 timedelta를 사용하여 Unix Epoch로부터의 거리를 안전하게 계산한 다음 초 또는 밀리초로 변환할 수 있습니다.

그 결과, unix 타임스탬프는 UTC 타임 존내의 타임스탬프 그 자체입니다.현지화된 시간대로 타임스탬프를 표시하려면 다른 변환을 수행해야 합니다.

또한 1970년 이후의 날짜에만 사용할 수 있습니다.

   import datetime
   import pytz

   UNIX_EPOCH = datetime.datetime(1970, 1, 1, 0, 0, tzinfo = pytz.utc)
   def EPOCH(utc_datetime):
      delta = utc_datetime - UNIX_EPOCH
      seconds = delta.total_seconds()
      ms = seconds * 1000
      return ms

다음은 위의 답변(및 밀리초 동안의 수정)에 근거한 것으로, 에뮬레이트 합니다.datetime.timestamp()Python 3보다 이전 버전에서는 타임존을 사용합니다.

def datetime_timestamp(datetime):
    '''
    Equivalent to datetime.timestamp() for pre-3.3
    '''
    try:
        return datetime.timestamp()
    except AttributeError:
        utc_datetime = datetime.astimezone(utc)
        return timegm(utc_datetime.timetuple()) + utc_datetime.microsecond / 1e6

질문에 정확하게 답변하려면 다음과 같이 하십시오.

datetime_timestamp(my_datetime) + 5 * 60

datetime_timestamp단순 날짜의 일부입니다.그러나 이 패키지를 사용하는 경우 다음과 같이 입력합니다.

SimpleDate(my_datetime).timestamp + 5 * 60

my_datetime에 대해 더 많은 형식/유형을 처리합니다.

def expiration_time():
    import datetime,calendar
    timestamp = calendar.timegm(datetime.datetime.now().timetuple())
    returnValue = datetime.timedelta(minutes=5).total_seconds() + timestamp
    return returnValue

솔루션에는timedelta.total_seconds()python-2.7+로 동작합니다.사용하다calendar.timegm(future.utctimetuple())Python의 하위 버전용입니다.

타임스탬프 기능을 내장한 이 방법은 어떻습니까?스니펫은 현재 시간뿐만 아니라 다른 시간에도 작동합니다.

import datetime

a = "2017-01-01 14:30:00"
b = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
c = int(b.timestamp()/60.0)
alarm_time = c + 5

런타임 환경 OS: Ubuntu 16.04 Python 3.6

언급URL : https://stackoverflow.com/questions/2775864/python-create-unix-timestamp-five-minutes-in-the-future

반응형