যদি d = date(2011, 1, 1)ইউটিসিতে থাকে:
>>> from datetime import datetime, date
>>> import calendar
>>> timestamp1 = calendar.timegm(d.timetuple())
>>> datetime.utcfromtimestamp(timestamp1)
datetime.datetime(2011, 1, 1, 0, 0)
যদি dস্থানীয় সময় অঞ্চল রয়েছে:
>>> import time
>>> timestamp2 = time.mktime(d.timetuple()) # DO NOT USE IT WITH UTC DATE
>>> datetime.fromtimestamp(timestamp2)
datetime.datetime(2011, 1, 1, 0, 0)
timestamp1timestamp2স্থানীয় সময় অঞ্চলটিতে মধ্যরাত্রিটি ইউটিসির মধ্যরাতের মতো একই সময়ের উদাহরণ না হলে এবং পৃথক হতে পারে।
mktime()একটি ভুল ফলাফলের আসতে পারে dএকটি সাথে সঙ্গতিপূর্ণ দ্ব্যর্থক স্থানীয় সময় (যেমন, ডিএসটি রূপান্তরটি সময়ে) অথবা যদি dএকটি অতীত (ভবিষ্যত) তারিখ যখন UTC অফসেট ভিন্ন হতে পারত হয় এবং সি mktime()কোন অ্যাক্সেস আছে TZ ডাটাবেসের দেওয়া প্ল্যাটফর্মে । আপনি সমস্ত প্ল্যাটফর্মের টিজেড ডাটাবেসে অ্যাক্সেস পেতে মডিউলটি (উদাহরণস্বরূপ ) ব্যবহারpytztzlocal.get_localzone() করতে পারেন । এছাড়াও, utcfromtimestamp()ব্যর্থ হতে পারে এবং টাইমজোন ব্যবহার করা mktime()হলে নন-পসিক্স টাইমস্ট্যাম্প ফিরে আসতে পারে"right" ।
datetime.dateইউটিসি-তে তারিখের প্রতিনিধিত্ব করে এমন অবজেক্টটি রূপান্তর করতে calendar.timegm():
DAY = 24*60*60 # POSIX day in seconds (exact value)
timestamp = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * DAY
timestamp = (utc_date - date(1970, 1, 1)).days * DAY
ইউটিসি অনুসারে যুগে যুগে আমি কীভাবে সেকেন্ডে রূপান্তরিত একটি তারিখ পেতে পারি?
ইতিমধ্যে ইউটিসি-র সময়কে সম্পর্কিত পসিক্স টাইমস্ট্যাম্পে (ক ) রূপান্তর করতে datetime.datetime(নয় datetime.date) অবজেক্টটি রূপান্তর করতে float।
পাইথন ৩.৩++
datetime.timestamp():
from datetime import timezone
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
দ্রষ্টব্য: আপনার timezone.utcস্পষ্টভাবে .timestamp()ডেটটাইম অবজেক্ট স্থানীয় সময় অঞ্চলে রয়েছে তা স্পষ্টভাবে অন্যথায় সরবরাহ করা প্রয়োজন ।
পাইথন 3 (<3.3)
এর জন্য দস্তাবেজগুলি থেকে datetime.utcfromtimestamp():
ডেটটাইম উদাহরণ থেকে টাইমস্ট্যাম্প পাওয়ার জন্য কোনও পদ্ধতি নেই, তবে ডেটটাইম উদাহরণের সাথে সম্পর্কিত পসিক্স টাইমস্ট্যাম্পটি ডিটি সহজেই নীচের হিসাবে গণনা করা যায়। একটি নিষ্পাপ ডিটি জন্য:
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
এবং একটি সচেতন জন্য ডিটি:
timestamp = (dt - datetime(1970,1,1, tzinfo=timezone.utc)) / timedelta(seconds=1)
আকর্ষণীয় পড়ুন: যুগের সময় বনাম দিনের সময়ের পার্থক্যের সময়টি কী সময়? আর কত সেকেন্ড কেটে গেছে?
আরও দেখুন: ডেটটাইমের একটি "যুগ" পদ্ধতি দরকার
পাইথন 2
পাইথন 2 এর জন্য উপরের কোডটি মানিয়ে নিতে:
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
যেখানে সত্য বিভাজন সক্ষম এর সাথে গণনার timedelta.total_seconds()সমান (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6।
from __future__ import division
from datetime import datetime, timedelta
def totimestamp(dt, epoch=datetime(1970,1,1)):
td = dt - epoch
# return td.total_seconds()
return (td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**6
now = datetime.utcnow()
print now
print totimestamp(now)
ভাসমান-পয়েন্ট বিষয়গুলি থেকে সাবধান থাকুন ।
আউটপুট
2012-01-08 15:34:10.022403
1326036850.02
একটি সচেতন datetimeঅবজেক্টকে কীভাবে পসিক্স টাইমস্ট্যাম্পে রূপান্তর করবেন
assert dt.tzinfo is not None and dt.utcoffset() is not None
timestamp = dt.timestamp() # Python 3.3+
পাইথন 3 এ:
from datetime import datetime, timedelta, timezone
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc)
timestamp = (dt - epoch) / timedelta(seconds=1)
integer_timestamp = (dt - epoch) // timedelta(seconds=1)
পাইথন 2 এ:
# utc time = local time - utc offset
utc_naive = dt.replace(tzinfo=None) - dt.utcoffset()
timestamp = (utc_naive - datetime(1970, 1, 1)).total_seconds()