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


Answers

الآن في 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
Question

لا بد لي من إنشاء قيمة "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

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




والمفتاح هو التأكد من أن جميع التواريخ التي تستخدمها موجودة في المنطقة الزمنية لـ utc قبل بدء التحويل. راجع http://pytz.sourceforge.net/ لمعرفة كيفية القيام بذلك بشكل صحيح. من خلال تطبيع إلى utc ، يمكنك القضاء على غموض التحولات الصيفي التحويلات. ثم يمكنك استخدام timedelta بأمان لحساب المسافة من حقبة unix ، ومن ثم تحويلها إلى ثوانٍ أو ميلي ثانية.

لاحظ أن الطابع الزمني 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



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



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

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



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

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

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




Links