Python - Как мне получить время в секундах между 2 днями? [Дубликат]

Я знаю это слишком поздно, но я обнаружил, что это решение намного лучше и проще

function isPrime($num)
{
    if ($num < 2) {
        return false;
    }
    for ($i = 2; $i <= $num / 2; $i++) {
        if ($num % $i == 0) {
            return false;
        }
    }

    return true;
}
96
задан Lynn 7 May 2018 в 16:47
поделиться

3 ответа

Используйте timedelta.total_seconds() .

210
ответ дан Eric 16 August 2018 в 02:44
поделиться

Вы можете использовать модуль mx.DateTime

import mx.DateTime as mt

t1 = mt.now() 
t2 = mt.now()
print int((t2-t1).seconds)
-3
ответ дан dev.mi 16 August 2018 в 02:44
поделиться

У вас есть проблема так или иначе с вашим выражением datetime.datetime.fromtimestamp(time.mktime(time.gmtime())).

(1) Если вам нужна только разница между двумя моментами в секундах, очень простая time.time() делает задание.

(2) Если вы используете эти временные метки для других целей, вам нужно подумать о том, что вы делаете, потому что результат имеет большой запах:

gmtime() возвращает тайм-код в UTC, но mktime() ожидает время кортежа по местному времени.

Я в Мельбурне, Австралия, где стандартный TZ - UTC + 10, но летнее время остается в силе до завтрашнего утра, так что это UTC + 11. Когда я выполнил следующее, это было 2011-04-02T20: 31 местное время здесь ... UTC был 2011-04-02T09: 31

>>> import time, datetime
>>> t1 = time.gmtime()
>>> t2 = time.mktime(t1)
>>> t3 = datetime.datetime.fromtimestamp(t2)
>>> print t0
1301735358.78
>>> print t1
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=9, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=0) ### this is UTC
>>> print t2
1301700663.0
>>> print t3
2011-04-02 10:31:03 ### this is UTC+1
>>> tt = time.time(); print tt
1301736663.88
>>> print datetime.datetime.now()
2011-04-02 20:31:03.882000 ### UTC+11, my local time
>>> print datetime.datetime(1970,1,1) + datetime.timedelta(seconds=tt)
2011-04-02 09:31:03.880000 ### UTC
>>> print time.localtime()
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=20, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=1) ### UTC+11, my local time

Вы заметите, что t3, результат ваше выражение UTC + 1, которое, как представляется, UTC + (моя локальная разница в DST) ... не очень значимо. Вы должны использовать datetime.datetime.utcnow(), который не будет прыгать на час, когда DST включается / выключается и может дать вам больше точности, чем time.time()

4
ответ дан John Machin 16 August 2018 в 02:44
поделиться
  • 1
    Спасибо за разъяснения. Для этой цели я сейчас использую разницу в несколько часов, но это не важно, но я обязательно буду проверять это в будущем, когда напишу что-нибудь более содержательное. – ripper234 2 April 2011 в 13:24
Другие вопросы по тегам:

Похожие вопросы: