গ্রামীণ সময় (+) এর সময় + তারিখ আউটপুট থেকে পর্ব শুরু হওয়ার পরে কীভাবে সেকেন্ড পাবেন?


162

আপনি কীভাবে বিপরীত করবেন gmtime(), যেখানে আপনি সময় + তারিখটি রেখেছেন এবং সেকেন্ডের সংখ্যা পাবেন?

আমার মতো স্ট্রিং রয়েছে 'Jul 9, 2009 @ 20:02:58 UTC'এবং আমি পর্ব এবং 9 ই জুলাই, 2009 এর মধ্যে সেকেন্ডের সংখ্যাটি ফিরে পেতে চাই।

আমি চেষ্টা করেছি time.strftimeকিন্তু এটি কীভাবে সঠিকভাবে ব্যবহার করতে হয় তা আমি জানি না, বা এটি ব্যবহারের সঠিক আদেশ যদি হয়।

উত্তর:


123

আপনি যদি এখানে পৌঁছেছেন কারণ কোনও অনুসন্ধান ইঞ্জিন আপনাকে ইউনিক্স টাইমস্ট্যাম্পটি কীভাবে পাবেন তা এই উত্তরটি পড়া বন্ধ করুন। একটি নীচে স্ক্রোল।

যদি আপনি বিপরীত হতে চান time.gmtime(), আপনি চান calendar.timegm()

>>> calendar.timegm(time.gmtime())
1293581619.0

আপনি আপনার স্ট্রিংকে এমন সময়ের সাথে টুপলে রূপান্তর করতে পারেন time.strptime(), যা আপনাকে এমন একটি সময় দ্বিগুণ দেয় যা আপনি পাঠাতে পারেন calendar.timegm():

>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778

ক্যালেন্ডার মডিউল সম্পর্কে আরও তথ্য এখানে


16
আপনি যদি বর্তমান ইউনিক্স যুগের সন্ধান করছেন তবে দয়া করে @ ডানজে-র মন্তব্য বা নরেনের উত্তরটি দেখুন, এই উত্তরটি ভুল!
kosii

637

সময় মডিউল ব্যবহার করুন :

epoch_time = int(time.time())

14
@ ডানজে: এটি ইপোকের (সময় নির্ধারিত একটি নির্দিষ্ট মুহুর্ত) সময় থেকে বিস্তৃত সেকেন্ডের সংখ্যা এবং এটি কোনও টাইমজোনের ক্ষেত্রে একই। যদিও আমরা লিপ সেকেন্ডের চারপাশে সময়ের উদাহরণগুলি উপেক্ষা করি; timeইউনিক্সের যুগ (1970) ব্যবহার করে এটি ইউটিসিতে রূপান্তর করা সহজ ।
jfs

42
নোট করুন এটি ওপি যা চেয়েছিল তা নয়, তবে এটি আমি চেয়েছিলাম। সুতরাং +1।
fearless_fool

6
এটি শিরোনামে যা জিজ্ঞাসা করা হয়েছে তার উত্তর: "যুগের পর থেকে সময় পাওয়া"। +1
আলেজান্দ্রোভিডি

@ জেএসএফেসেস্টিয়ান এটি কয়েক সেকেন্ডে যুগ যুগ দেয়। উপরের একই উত্তরটি ব্যবহার করে আমি কীভাবে মিলিসেকেন্ড পর্যন্ত রেজোলিউশন পেতে পারি?
মার্লন অ্যাবাইকুন

2
উপরে আমার মন্তব্যটি প্রসারিত করতে : time.time()মান স্থানীয় সময় অঞ্চলের উপর নির্ভর করে না (যদি আমরা "ডান" টাইমজোনগুলি এবং এর মতো বাদ দিই) উদাহরণস্বরূপ, যদি এটি পসিক্স সময় দেয় (এটি বেশিরভাগ সিস্টেমে যেমন হয়) তবে এটি এসআই সেকেন্ডের সংখ্যা থেকে যুগটি (1970-01-01UTC) লিপ সেকেন্ড গণনা করছে না। এই মান করতে ইউটিসি রূপান্তরিত করা (লিপ সেকন্ড বাদে) কিন্তু এটা ইউটিসি নয় । @ মারলনএবেইকুন: আমি এই উত্তরটি
jfs

10

নোট time.gmtimeকরুন টাইমস্ট্যাম্প 0থেকে 1970-1-1 00:00:00

In [61]: import time       
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

time.mktime(time.gmtime(0)) আপনাকে এমন একটি পরিমাণ দ্বারা স্থানান্তরিত একটি টাইমস্ট্যাম্প দেয় যা আপনার লোকেলের উপর নির্ভর করে, যা সাধারণত 0 হয় না।

In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0

বিপরীতটি time.gmtimeহ'ল calendar.timegm:

In [62]: import calendar    
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0

এই time.mktime ভাল ব্যাখ্যা এবং উদাহরণ (যা একাউন্টে বর্তমান সময় অঞ্চল নেওয়া), ধন্যবাদ দেয়
Jkm

@ জে কে এম: এর mktime()সাথে ব্যবহার করবেন না gmtime()mktime()আপনার গ্রহণ স্থানীয় সময় কিন্তু gmtime()ফেরৎ ইউটিসি সময় - আপনার স্থানীয় সময় অঞ্চল may এবং আলাদা হতে পারে। "আপনার লোকেলের সাথে সম্পর্কিত টাইমস্ট্যাম্প" বুদ্ধিমানের: POSIX টাইমস্ট্যাম্প আপনার লোকেলের (স্থানীয় সময় অঞ্চল) উপর নির্ভর করে না - এটি বিশ্বজুড়ে একই মান। "যুগের পর থেকে সেকেন্ড" বেশিরভাগ ক্ষেত্রে পিসিক্স টাইমস্ট্যাম্প (এমনকি উইন্ডোতেও) - টিআই টাইম স্কেল ব্যবহার করে "ডান" টাইমজোনগুলির মতো জিনিসগুলি সাধারণ নয়। দেখুন না পাইথন এর time.time () স্থানীয় বা ইউটিসি টাইমস্ট্যাম্প আসতে?
jfs

@ জেএফ সেবাস্তিয়ান আপনি ঠিক বলেছেন। আসলে আমি mktime()সম্প্রতি কিছু সমস্যা পেয়েছি । কিছু পাইথন ওয়েব সার্ভারের জন্য (উদাহরণস্বরূপ টর্নেডো), যেহেতু প্রক্রিয়াটি চলতে থাকে, যদিও আমি সিস্টেমের লোকেল পরিবর্তন করি, mktime()ওয়েব সার্ভার এপিআই দ্বারা কল করা সময় অবজেক্ট তৈরি করতে এখনও পুরানো টাইমজোন ব্যবহার করে । আমাকে স্যুইচ করতে হবে gmtime()এবং ম্যানুয়ালি জিএমটি অফসেট প্রয়োগ করতে হবে।
জে কে এম

5
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()

এটির থেকে আলাদা হওয়া উচিত int(time.time()), তবে এর মতো কিছু ব্যবহার করা নিরাপদx % (60*60*24)

তারিখ সময় - বেসিক তারিখ এবং সময় প্রকার:

সময় মডিউলটির বিপরীতে ডেটটাইম মডিউল লিপ সেকেন্ড সমর্থন করে না।


3
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")

আমি কোনও কারণে স্ট্রপটাইম অ্যাক্সেস করতে পারি না। আমি
ডেটটাইম

1
@ ক্যালক্রিপ্রিপতে আপনাকে করতে হবে from datetime import datetimeবা করতে হবেdatetime.datetime.strptime
প্যাথিক্রিট

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.