Epoch 시간을 날짜 / 시간으로 변환


303

나는 나머지에서 응답을 받고있는 것은 Epoch 시간 형식입니다.

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.
Burhan Khalid

@Burhan 어떻게 이것이 유효한 Epoch가 아님을 알았습니까?
user1667633

2
Epoch는 ~ 10¹⁰ 범위에 있기 때문에. time.ctime (1347516459.425)을 사용하면 Sep 13 '12가 표시됩니다. 소수점을 염두에 두십시오.
Pax Vobiscum

7
유닉스 타임 을 의미 할 때 "에포크 시간"이라고 부르지 마십시오 . 컴퓨팅에 사용 된 많은 시대 가있었습니다 .
Matt Johnson-Pint

나는 epoch = unix = posix ...를 지적 해 주셔서 감사합니다.
Ben

답변:


354

시간 값 (float 또는 int)을 형식화 된 문자열로 변환하려면 다음을 사용하십시오.

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"시간은 어디에서 왔습니까? 사용중인 실시간 가치입니까?
ron rothman

실제로 나는 bigbluebutton 서버에서 그 가치를 얻고있다
user1667633

20
time.strftime ( '% Y- % m- % d % H : % M : % S', time.localtime (1347517491.247)) '2012-09-13 08:24:51'당신의 가치는 획기적인 ms입니다
MatthieuW

1
형식 문자열에 대한 자세한 내용은 docs.python.org/2/library/time.html#time.strftime 을 참조하십시오.
georg

221

당신은 또한 사용할 수 있습니다 datetime:

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

3
어떤 시간대 에서이 변환을 수행합니까? 특정 시간대에 있고 싶다면 어떻게해야합니까? ?
garg10may

4
@ garg10 epoch 시간은 항상 UTC 오프셋 0이므로 문자열도 UTC 오프셋 0입니다. 이는 Zulu 시간대 (+00 : 00)와 같습니다. 자세한 내용은 여기를 참조하십시오 : timeanddate.com/time/zones/z
Devnetics

6
파이썬 3에서 UTC 시간을 얻는 'utcfromtimestamp'함수가 있습니다.
vwvolodya

이 답변의 장점은 날짜 시간 버전의 strftime()더 많은 서식 자리 표시 자, 특히 시간의 마이크로 초 포팅에 대해 % f를 지원한다는 것입니다. time.strftime()마이크로 초가에 입력되는 부동 소수점 값으로 표시 될 수 있지만 알 수없는 이유로 지원하지 않습니다 time.localtime().
Andreas Maier

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'

의사는
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'

또한 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

man 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)

전달하는 인수 time.gmtime()가 정수 인지 확인하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.