Python قم بإنشاء الطابع الزمني unix خمس دقائق في المستقبل




datetime unix-timestamp (8)

إليك حلًا أقل datetime إلى datetime ليتم تحويله من كائن وقت / وقت إلى طابع زمني posix:

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

رؤية المزيد من التفاصيل في تحويل datetime.date إلى UTC الطابع الزمني في بيثون .

لا بد لي من إنشاء قيمة "Expires" 5 دقائق في المستقبل ، ولكن لا بد لي من توفيره في شكل 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

هل هناك وحدة نمطية أو وظيفة تقوم بتحويل الطابع الزمني بالنسبة لي؟


طريقة أخرى هي استخدام calendar.timegm :

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

كما أنه أكثر قابلية للحمل من strftime %s إلى strftime (والتي لا تعمل على Windows).


لاحظ أن الحلول مع timedelta.total_seconds() تعمل على python-2.7 +. استخدم calendar.timegm(future.utctimetuple()) للإصدارات الأقل من Python.


هذا هو ما تحتاجه:

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

يعتمد ما يلي على الإجابات أعلاه (بالإضافة إلى تصحيح للمللي ثانية) ويحاكي datetime.timestamp() لـ Python 3 قبل 3.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 جزء من simple-date . ولكن إذا كنت تستخدم هذه الحزمة ، فمن المحتمل أن تكتب:

SimpleDate(my_datetime).timestamp + 5 * 60

والذي يتعامل مع العديد من التنسيقات / الأنواع لـ my_datetime.


يمكنك استخدام datetime.strftime للحصول على الوقت في شكل Epoch ، باستخدام سلسلة تنسيق %s :

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

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

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




unix-timestamp