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



4 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

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




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

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

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




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

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



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



والمفتاح هو التأكد من أن جميع التواريخ التي تستخدمها موجودة في المنطقة الزمنية لـ 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



Related