युगांतर काल को युगांतर में परिवर्तित करना


302

मुझे बाकी लोगों से एक प्रतिक्रिया मिल रही है जैसे कि एक युगांतर प्रारूप

start_time = 1234566
end_time = 1234578

मैं MySQL प्रारूप समय में उस युग के सेकंड को परिवर्तित करना चाहता हूं ताकि मैं अपने MySQL डेटाबेस में अंतरों को संग्रहीत कर सकूं।

मैंने कोशिश की:

>>> 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
बुरहान खालिद

@ बुरहान आपको कैसे पता चला कि यह वैध युग नहीं है?
user1667633

2
क्योंकि एक युग केवल ~ 10 only की सीमा में है। Time.ctime (1347516459.425) का उपयोग करने का प्रयास करें, यह आपको 13 सितंबर 12 देगा। दशमलव मन।
पैक्स वोबिस्कम

7
जब आप यूनिक्स समय का मतलब करते हैं, तो इसे "युगांतर समय" कहना बंद कर दें । किया गया है कई अलग अलग कंप्यूटिंग में प्रयोग किया जाता अवधियों को
मैट जॉनसन-पिंट

मैं युग = यूनिक्स = पॉज़िक्स लेता था ... जो इस ओर इशारा करने के लिए धन्यवाद।
बेन

जवाबों:


353

अपने समय मान (फ्लोट या इंट) को स्वरूपित स्ट्रिंग में बदलने के लिए, उपयोग करें:

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

3
time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (1347517491247) '44671-02-17 11:44:07' क्यों?
user1667633

3
आपके उदाहरण में "1347517491247" समय कहां से आया? क्या यह वास्तविक समय मूल्य है जिसका आप उपयोग कर रहे हैं?
रॉन रोथमैन

वास्तव में मैं bigbluebutton सर्वर से मान प्राप्त कर रहा हूँ
user1667633

20
time.strftime ('% Y-% m-% d% H:% M:% S', time.localtime (1347517491.247)) '2012-09-13 08:24:51' एमएस में आपका मान है
MatthieuW

1
प्रारूप स्ट्रिंग में अधिक जानकारी के लिए docs.python.org/2/library/time.html#time.strftime देखें
georg

220

आप यह भी उपयोग कर सकते हैं datetime:

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

3
किस समय में यह परिवर्तित होता है, क्या होगा यदि मैं एक विशिष्ट समयक्षेत्र में होना चाहता हूं। ?
garg10may

4
@ garg10may युग का समय हमेशा UTC ऑफसेट 0 होता है, इसलिए स्ट्रिंग UTC ऑफसेट 0. भी होगी। यह ज़ुलु समयक्षेत्र (+00: 00) के बराबर है। आप यहाँ और अधिक पढ़ सकते हैं: timeanddate.com/time/zones/z
Devnetics

6
अजगर 3 में UTC समय पाने के लिए 'utcfromtimestamp' फ़ंक्शन है
vwvolodya

इस उत्तर का उपयोग करने का लाभ यह है कि 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

UTC पाने के लिए:

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

डॉक्टर कहते हैं कि यह पूर्व
qrtLs

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'

MySQL में भी, आप 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

पहले आदमी gmtime से युग में जानकारी का एक सा

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)

बस यह सुनिश्चित करें कि आप जिस arg से गुजर रहे हैं time.gmtime()वह पूर्णांक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.