Ответ 1
Чтобы преобразовать ваше значение времени (float или int) в форматированную строку, используйте:
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))
Я получаю ответ от остального - это формат времени 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
Чтобы преобразовать ваше значение времени (float или int) в форматированную строку, используйте:
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))
Вы также можете использовать datetime
:
>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%c')
'2012-09-13 02:22:50'
Это то, что вам нужно
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
Попробуйте следующее:
>>> 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)
#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)
Это немного более многословие, но оно исходит из команды date в unix.
Сначала немного информации в эпоху от человека 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()
является целым числом.
>>> 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'