time.time()
পাইথন টাইম মডিউলটিতে কি সিস্টেমের সময় বা ইউটিসির সময়টি ফিরে আসে?
time.time()
পাইথন টাইম মডিউলটিতে কি সিস্টেমের সময় বা ইউটিসির সময়টি ফিরে আসে?
উত্তর:
time.time()
ফাংশন, কাল থেকে সেকেন্ডের সংখ্যা ফেরৎ সেকেন্ড হিসাবে। নোট করুন যে "যুগে যুগে" ইউটিসিতে ১ লা জানুয়ারি, 1970 এর সূচনা হিসাবে সংজ্ঞায়িত করা হয়। সুতরাং যুগে যুগে ইউটিসির শর্তাবলী সংজ্ঞায়িত করা হয় এবং সময়মতো একটি বিশ্ব মুহুর্ত প্রতিষ্ঠিত করে। আপনি যেখানে "সেকেন্ডের অতীতকাল" (টাইম.টাইম ()) একই মুহূর্তে একই মান ফেরত দেয় না matter
এখানে কিছু নমুনা আউটপুট আমি আমার কম্পিউটারে দৌড়েছি, এটিকে স্ট্রিংয়ে রূপান্তরিত করেছি।
Python 2.7.3 (default, Apr 24 2012, 00:00:54)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> ts = time.time()
>>> print ts
1355563265.81
>>> import datetime
>>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
>>> print st
2012-12-15 01:21:05
>>>
ts
পরিবর্তনশীল সময় সেকেন্ডের মধ্যে ফিরে আসেন। আমি তখন এটি datetime
লাইব্রেরি ব্যবহার করে একটি স্ট্রিংয়ে রূপান্তরিত করে এটি স্ট্রিং তৈরি করে যা মানব পাঠযোগ্য।
import time
ডেটটাইম যখন মূলত আপনাকে টাইমস্ট্যাম্প দেয় তখন আমাদের কেন উচিত । শুধু মিলি সেকেন্ড সরিয়ে ফেলুন -str(datetime.datetime.now()).split('.')[0]
time.time()
কোনও টাইমজোন নয় । "যুগের পর থেকে সেকেন্ড" একটি শব্দ; কিছু সময় পর্ব থেকে এটি শেষ হয়ে যায় না (secondsগ)) আপনি এটিকে আপনার স্থানীয় সময় (tz ডাটাবেস সহ) এবং / অথবা ইউটিসি টাইমজোন সহজে রূপান্তর করতে পারেন। বিটিডব্লিউ, আপনি যদি .strftime()
ফলাফলটি বাদ দেন (প্রায়) একই (+/- মাইক্রোসেকেন্ডস)।
এটি এমন টাইমস্ট্যাম্পের পাঠ্য ফর্মের জন্য যা আপনার পাঠ্য ফাইলগুলিতে ব্যবহার করা যেতে পারে। (প্রশ্নের শিরোনাম অতীতে পৃথক ছিল, তাই সময়টির ব্যাখ্যা কীভাবে করা যেতে পারে তা স্পষ্ট করে এই উত্তরের ভূমিকা পরিবর্তন করা হয়েছিল। [আপডেট করা হয়েছে 2016-01-14])
আপনি .now()
বা .utcnow()
এর ব্যবহার করে স্ট্রিং হিসাবে টাইমস্ট্যাম্প পেতে পারেন datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
now
পৃথক থেকে utcnow
আশানুরূপ - অন্যথায় তারা একই ভাবে কাজ করে:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
আপনি স্ট্রিংয়ের স্পষ্টভাবে টাইমস্ট্যাম্প রেন্ডার করতে পারেন:
>>> str(datetime.datetime.now())
'2012-12-15 11:15:24.984000'
অথবা আপনার পছন্দ মতো টাইমস্ট্যাম্প ফর্ম্যাট করতে আপনি আরও সুস্পষ্ট হতে পারেন:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
'Saturday, 15. December 2012 11:19AM'
আপনি যদি আইএসও ফর্ম্যাট চান .isoformat()
তবে অবজেক্টের পদ্ধতিটি ব্যবহার করুন :
>>> datetime.datetime.now().isoformat()
'2013-11-18T08:18:31.809000'
আপনি এইগুলি রূপান্তর ছাড়াই গণনা এবং মুদ্রণের জন্য পরিবর্তনশীলগুলিতে ব্যবহার করতে পারেন।
>>> ts = datetime.datetime.now()
>>> tf = datetime.datetime.now()
>>> te = tf - ts
>>> print ts
2015-04-21 12:02:19.209915
>>> print tf
2015-04-21 12:02:30.449895
>>> print te
0:00:11.239980
import datetime; print "%s: My timestamp message" % datetime.datetime.utcnow()
পাইথন 2: পাইথন 3:import datetime; print ("%s: My timestamp message" % datetime.datetime.utcnow())
datetime.datetime.utcnow()
মন্দ। এটি একটি নিষ্পাপ ডেটটাইম তৈরি করে যা স্থানীয় সময় নয়। আপনার স্থানীয় সময়টি ইউটিসি না হলে এটি ভুল হবে। datetime.datetime.now(datetime.timezone.utc)
পরিবর্তে ব্যবহার করুন। এটি বর্তমান সময়ের প্রতিনিধিত্ব করে একটি সময় অঞ্চল সচেতন তারিখের সময় তৈরি করে।
# স্কুইগুয়ের উত্তরের ভিত্তিতে, একটি সত্যিকারের টাইমস্ট্যাম্প পেতে আমি এটি ভাসা থেকে কাস্ট করে টাইপ করব।
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
কমপক্ষে এটি ধারণা।
type(time.time())
দেয়<type 'float'>
int()
। এটি long
পুরানো পাইথন সংস্করণে প্রয়োজনে ফিরে আসবে - সমস্ত পূর্ণসংখ্যার নতুন পাইথন সংস্করণ দীর্ঘ long
উত্তর দুটি বা উভয়ই হতে পারে।
উভয়ই: time.time()
মহাকাব্যকাল থেকে প্রায় সেকেন্ডের বিস্তৃত পরিমাণ প্রদান করে। ফলাফল সময় অঞ্চলের উপর নির্ভর করে না তাই এটি ইউটিসি বা স্থানীয় সময়ও নয়। "যুগের পর থেকে দ্বিতীয় সেকেন্ড" এর জন্য এখানে পসিক্সের সংজ্ঞা রয়েছে ।
উভয়ই: time.time()
আপনার সিস্টেমের ঘড়িটিকে সিঙ্ক্রোনাইজ করার দরকার নেই তাই এটির মানটি প্রতিবিম্বিত হয় (যদিও এটির স্থানীয় টাইমজোনটির সাথে কোনও সম্পর্ক নেই)। একই সাথে বিভিন্ন কম্পিউটার বিভিন্ন ফলাফল পেতে পারে। অন্যদিকে আপনার কম্পিউটারের সময়টি যদি সিঙ্ক্রোনাইজ হয় তবে টাইমস্ট্যাম্প থেকে ইউটিসি সময় পাওয়া সহজ (যদি আমরা লিপ সেকেন্ড উপেক্ষা করি):
from datetime import datetime
utc_dt = datetime.utcfromtimestamp(timestamp)
বিভিন্ন পাইথন সংস্করণে ইউটিসি সময় থেকে টাইমস্ট্যাম্পগুলি কীভাবে পাবেন, দেখুন ইউটিসি অনুসারে পর্বের সময় থেকে আমি কীভাবে সেকেন্ডে রূপান্তর করতে পারি?
datetime.utcfromtimestamp
যখন উত্তরগুলির সাথে 308 আপভোট রয়েছে datetime.fromtimestamp
:-(
time.time()
ফাংশনটি কী দেয় তা সম্পর্কে (এটি খুব সংক্ষিপ্ত)। আপনার মন্তব্যটি আরও কিছু প্রশ্নের সমাধান করে (আপনি যেহেতু আমি এর উত্তর দেওয়া শুরু করেছেন আপনি নিজের মন্তব্য পরিবর্তন করেছেন the আরও খারাপের জন্য)। একটি সরু নোট; "সঠিক" শব্দটি অল্প পরিমাণে ব্যবহার করা উচিত (সময় অঞ্চলগুলি জটিল silver কোনও রূপালী বুলেট নেই — কেবল কোনও নির্দিষ্ট ব্যবহারের ক্ষেত্রে ট্রেড অফস)।
datetime.datetime.utcfromtimestamp(ts)
। আপনার স্থানীয় সময়টি ইউটিসি না হলে এটি ভুল হবে, কারণ এটি একটি নির্লজ্জ ডেটটাইম তৈরি করে যা স্থানীয় সময় নয়। datetime.datetime.fromtimestamp(ts,datetime.timezone.utc)
পরিবর্তে ব্যবহার করুন। এটি টাইমস্ট্যাম্পের মতো একই তাত্ক্ষণিকের প্রতিনিধিত্ব করে একটি সময় অঞ্চল সচেতন ডেটটাইম তৈরি করে।
naive_dt.astimezone()
অন্তর্নিহিতের মতো অস্তিত্ব থাকবে না bytes.encode()
3. এটি সত্য যে অনেক ক্ষেত্রেই ইউটিসি সময় অভ্যন্তরীণভাবে কাজ করা উপকারী। ডেটটাইম মডিউল সম্পর্কে অনেক কিছুই বলা যায় (আমি সোনার ব্যাজ পেতে যথেষ্ট প্রশ্নের উত্তর দিয়েছি) বেশিরভাগ প্রশ্নের সুযোগের বাইরে: কী time.time()
ফিরবে।
শেষ পর্যন্ত আমি স্থির হয়েছি:
>>> import time
>>> time.mktime(time.gmtime())
1509467455.0
time.time()
আয় দশমিক / মত ভাসা 1574115250.818733
এবং মিলিসেকেন্ড-যেহেতু-কাল সহজে হয় int(time.time() * 1000)
যেমন1574115254915
নির্দিষ্ট সময় অঞ্চলে "যুগ" নামে কোনও জিনিস নেই। যুগে যুগে সময় একটি নির্দিষ্ট মুহুর্ত হিসাবে ভাল সংজ্ঞায়িত করা হয়, তাই আপনি সময় অঞ্চল পরিবর্তন করলে, সময় নিজেই পরিবর্তন হয়। বিশেষত, এই সময় Jan 1 1970 00:00:00 UTC
। সুতরাং time.time()
যুগের পর থেকে সেকেন্ডের সংখ্যা ফিরে আসে।
টাইমস্ট্যাম্প সর্বদা ইউটিসি তে সময় থাকে তবে আপনি যখন datetime.datetime.fromtimestamp
এটি কল করেন তখন এই সময়স্ট্যাম্পের সাথে সম্পর্কিত আপনার স্থানীয় সময় অঞ্চলতে আপনাকে সময় দেয়, সুতরাং ফলস্বরূপ আপনার লোকেলের উপর নির্ভর করে।
>>> import time, datetime
>>> time.time()
1564494136.0434234
>>> datetime.datetime.now()
datetime.datetime(2019, 7, 30, 16, 42, 3, 899179)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2019, 7, 30, 16, 43, 12, 4610)
arrow
বিভিন্ন আচরণ সহ সুন্দর লাইব্রেরি রয়েছে । একই ক্ষেত্রে এটি আপনাকে ইউটিসি টাইমজোন দিয়ে সময় অবজেক্ট দেয়।
>>> import arrow
>>> arrow.now()
<Arrow [2019-07-30T16:43:27.868760+03:00]>
>>> arrow.get(time.time())
<Arrow [2019-07-30T13:43:56.565342+00:00]>