推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
qazwsxkevin
V2EX  ›  Python

请教两个 datetime.datetime 要计算小时差,怎么做会比较好? 要先转成 datetime.timedelta 再做吗?

  •  
  •   qazwsxkevin · Oct 20, 2020 · 2296 views
    This topic created in 2033 days ago, the information mentioned may be changed or developed.

    有两个 datetime.datetime 数据
    nowTime = datetime.datetime.now()
    getFromdatabaseTime = dbTask.get('RecordTime')

    如果: TimeResult = (nowTime - getFromdatabaseTime).seconds 可以得到一个数值,不过似乎不准的一个什么玩意。。。(汗)

    鉴于印象中以前做过 datetime.timedelta 的计算,似乎 datetime.timedelta 的方法比较容易写,直观又方便 但看了一下文档,似乎又没提到 datetime.timedelta 和 datetime.datetime 的互转。
    datetime.datetime 要转成 datetime.timedelta ? 这个应该怎么转?
    反过来 datetime.timedelta 要转成 datetime.datetime ?
    如果大哥们硬要把 datetime.datetime 以拆元组里面的值,分解写计算过程出结果,这就离谱了(笑,逃~)

    5 replies    2020-10-21 12:54:50 +08:00
    raymanr
        1
    raymanr  
       Oct 20, 2020   ❤️ 2
    datetime.datetime 是具体时间的数据类型
    datetime.timedelta 是代表时间差的数据类型

    我不清楚 datetime 怎么转换 timedelta, 会出什么问题

    不过可以告诉你是 datetime - datetime 就会得到 timedelta, 然后 total_seconds / 3600 就是小时了

    delta 是数学中常用来表示差值的希腊字符
    Acoffice
        2
    Acoffice  
       Oct 20, 2020 via Android
    你先转或者直接用时间戳减完,再转也是可以的。
    raymanr
        3
    raymanr  
       Oct 20, 2020   ❤️ 2
    突然想起来了, timedelta 是由天数和秒数两个数值构成

    比如 timedelta(days=1,seconds=22)

    你访问的 seconds 属性只会返回秒数部分 22, 这是你代码有问题的地方

    所以需要调用 total_seconds() 方法
    qazwsxkevin
        4
    qazwsxkevin  
    OP
       Oct 21, 2020
    恍然大悟,total_seconds()
    感谢!!
    shm7
        5
    shm7  
       Oct 21, 2020
    @qazwsxkevin 这还需要恍然大雾嘛。

    官方文档丢给你: https://docs.python.org/3.6/library/datetime.html
    直接取 timedelta 的 seconds 属性就行了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2594 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 16:01 · PVG 00:01 · LAX 09:01 · JFK 12:01
    ♥ Do have faith in what you're doing.