যুগের সময়টিকে তারিখের সময় রূপান্তর করা


302

বাকিদের কাছ থেকে আমি একটি প্রতিক্রিয়া পাচ্ছি এটি একটি যুগের সময় বিন্যাসের মতো

start_time = 1234566
end_time = 1234578

আমি সেই যুগের সেকেন্ডগুলিকে মাইএসকিউএল ফর্ম্যাট সময়ে রূপান্তর করতে চাই যাতে আমি আমার মাইএসকিউএল ডাটাবেসে পার্থক্যগুলি সঞ্চয় করতে পারি।

আমি চেষ্টা করেছিলাম:

>>> import time
>>> time.gmtime(123456)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17, tm_sec=36, tm_wday=4, tm_yday=2, tm_isdst=0)

উপরের ফলাফলটি আমি প্রত্যাশা করছি না। আমি চাই এর মতো হোক

2012-09-12 21:00:00

দয়া করে পরামর্শ দিন আমি কীভাবে এটি অর্জন করতে পারি?

এছাড়াও, কেন আমি পাচ্ছি TypeError: a float is requiredজন্য

>>> getbbb_class.end_time = 1347516459425
>>> mend = time.gmtime(getbbb_class.end_time).tm_hour
Traceback (most recent call last):
  ...
TypeError: a float is required

আপনি কি সম্পর্কে নিশ্চিত 1347516459425? এটি কোনও বৈধ যুগ নয়। ব্যবহার করে দেখুন time.gmtime(float(str(i)[:-6]+'.'+str(i)[-6:]))যেখানে iহয় 1347516459425
বুরহান খালিদ

@ বুরহান আপনি কীভাবে আবিষ্কার করলেন যে এটি বৈধ যুগের নয়?
ব্যবহারকারী 1667633

2
কারণ একটি যুগ কেবলমাত্র ~ 10¹⁰ এর মধ্যে থাকে ¹⁰ টাইম কোডটাইম (1347516459.425) ব্যবহার করার চেষ্টা করুন, এটি আপনাকে 13 সেপ্টেম্বর '12 দিবে। দশমিক মনে।
প্যাক্স ভোবিস্কুম

7
আপনি যখন ইউনিক্স সময় বলতে চাইছেন দয়া করে এটিকে "এপোক সময়" বলা বন্ধ করুন । কম্পিউটিংয়ে বিভিন্ন রকমের ইউপ ব্যবহার করা হয়েছে ।
ম্যাট জনসন-পিন্ট

আমি ইউপ = ইউনিক্স = পিক্স ব্যবহার করতাম ... এটি নির্দেশ করার জন্য ধন্যবাদ।
বেন

উত্তর:


353

আপনার সময়ের মান (ভাসা বা ইনট) একটি ফর্ম্যাট স্ট্রিংয়ে রূপান্তর করতে, ব্যবহার করুন:

time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))

3
সময়.স্ট্রফটাইম ('% Y-% m-% d% H:% M:% S', সময়.লোকালটাইম (1347517491247)) '44671-02-17 11:44:07' কেন?
ব্যবহারকারী 1667633

3
"1347517491247" সময়টি আপনার উদাহরণ থেকে এসেছে? আপনি কি ব্যবহার করছেন এটি একটি বাস্তব সময় মূল্য?
রন রোথম্যান

বাস্তবে আমি সেই মূল্যটি বড়ব্লুবুটন সার্ভার থেকে পেয়ে যাচ্ছি
ব্যবহারকারী 1667633

20
সময়.স্ট্রফটাইম ('% Y-% m-% d% H:% M:% S', সময়.লোকালটাইম (1347517491.247)) '2012-09-13 08:24:51' আপনার মান এমএস-এ শুরু হবে
ম্যাথিউইউডাব্লু

1
দেখতে docs.python.org/2/library/time.html#time.strftime বিন্যাস স্ট্রিং আরও তথ্যের জন্য
গেয়র্গ

220

আপনি এটি ব্যবহার করতে পারেন datetime:

>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%c')
  '2012-09-13 02:22:50'

3
কোন টাইমজোন এটি রূপান্তর করে, যদি আমি একটি নির্দিষ্ট সময় অঞ্চলে থাকতে চাই। ?
garg10may

4
@ Garg10may যুগের সময়টি সর্বদা ইউটিসি অফসেট 0 হয়, সুতরাং স্ট্রিংটি ইউটিসি অফসেট 0ও হবে এটি জুলু টাইমজোন (+00: 00) এর সমতুল্য। : আপনি এখানে পড়তে পারেন timeanddate.com/time/zones/z
Devnetics

6
পাইথন ৩
তে

এই উত্তরটি ব্যবহার করার সুবিধাটি হ'ল ডেটটাইম সংস্করণটি strftime()আরও ফর্ম্যাটিং স্থানধারকদের সমর্থন করে বিশেষত% f সেই সময়ের মাইক্রোসেকেন্ডের পোর্টেশনের জন্য। অজানা কারণে, time.strftime()এটি সমর্থন করে না, যদিও মাইক্রোসেকেন্ডগুলি ফ্লোট মানটিতে প্রতিনিধিত্ব করা যেতে পারে যা ইনপুট time.localtime()
আন্দ্রেস মাইয়ার

60
>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
'2012-09-13 14:22:50' # Local time

ইউটিসি পেতে:

>>> datetime.datetime.utcfromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
  '2012-09-13 06:22:50'

ডক বলেছেন যে এটি পূর্বের
qrtL গুলি

14

এই আপনার প্রয়োজন

In [1]: time.time()
Out[1]: 1347517739.44904

In [2]: time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()))
Out[2]: '2012-09-13 06:31:43'

দয়া করে একটি এর floatপরিবর্তে একটি ইনপুট করুন intএবং অন্যটি TypeErrorচলে যাওয়া উচিত।

mend = time.gmtime(float(getbbb_class.end_time)).tm_hour

10

এটা চেষ্টা কর:

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1347517119))
'2012-09-12 23:18:39'

মাইএসকিউএল-তেও আপনি FROM_UNIXTIMEপছন্দ করতে পারেন:

INSERT INTO tblname VALUES (FROM_UNIXTIME(1347517119))

আপনার ২ য় প্রশ্নের জন্য এটি সম্ভবত getbbb_class.end_timeএকটি স্ট্রিং কারণ । আপনি এটি সংখ্যার মতো রূপান্তর করতে পারেন:float(getbbb_class.end_time)


8
#This adds 10 seconds from now.
from datetime import datetime
import commands

date_string_command="date +%s"
utc = commands.getoutput(date_string_command)
a_date=datetime.fromtimestamp(float(int(utc))).strftime('%Y-%m-%d %H:%M:%S')
print('a_date:'+a_date)
utc = int(utc)+10
b_date=datetime.fromtimestamp(float(utc)).strftime('%Y-%m-%d %H:%M:%S')
print('b_date:'+b_date)

এটি একটু বেশি শব্দযুক্ত তবে এটি ইউনিক্সের তারিখের আদেশ থেকে আসে।


3

ম্যান জিএমটাইমের কাছ থেকে প্রথম যুগের কিছুটা তথ্য

The ctime(), gmtime() and localtime() functions all take an argument of data type time_t which represents calendar  time.   When  inter-
       preted  as  an absolute time value, it represents the number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal
       Time (UTC).

যুগে যুগে হওয়া উচিত তা বোঝার জন্য।

>>> time.time()
1347517171.6514659
>>> time.gmtime(time.time())
(2012, 9, 13, 6, 19, 34, 3, 257, 0)

আপনি যে আর্গটিটি দিয়ে যাচ্ছেন time.gmtime()তা পূর্ণসংখ্যা নিশ্চিত করুন ।

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