推荐学习书目
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
hahaba
V2EX  ›  Python

Python 格式化时间问题

  •  
  •   hahaba · Oct 20, 2020 · 2634 views
    This topic created in 2029 days ago, the information mentioned may be changed or developed.

    这种带时区的时间:2020-10-20T21:26:06.913277863+09:00,如何格式化:%Y:%m:%d %H:%M:%S

    不可影响时间精度

    Supplement 1  ·  Oct 20, 2020
    已经解决了,方法如下:

    import pytz
    from tzlocal import get_localzone
    from dateutil.parser import parse

    my_time = "2020-10-20T21:26:06.913277863+09:00"
    dt = parse(my_time)
    localtime = dt.astimezone(pytz.timezone('{}'.format(get_localzone())))
    print(localtime.strftime("%Y-%m-%d %H:%M:%S"))
    # 2020-10-20 20:26:06
    8 replies    2020-10-20 21:50:44 +08:00
    hahaba
        1
    hahaba  
    OP
       Oct 20, 2020
    有点郁闷,不知如何下手
    no1xsyzy
        2
    no1xsyzy  
       Oct 20, 2020
    datetime 默认不带 tzinfo,需要插入
    或者你自己随便写写时区也行

    >>> datetime(2006,1,2,15,4,5,7,tzinfo=timezone(timedelta(hours=8))).strftime("%Y:%m:%dT%H:%M:%S.%f%z")
    '2006:01:02T15:04:05.000007+0800'

    不过 datetime 的精度只到 μs,寻求第三方库或者干脆补三个 0 吧
    misaka19000
        3
    misaka19000  
       Oct 20, 2020
    楼主生活在日本?
    Tromso
        4
    Tromso  
       Oct 20, 2020
    之前用 python 处理 MongoDB 里的时间, dateutil 库可以转换
    from dateutil import parser
    parser.parse("2020-10-20T21:26:06.913277863+09:00").strftime("%Y:%m:%d %H:%M:%S")
    noobsheldon
        5
    noobsheldon  
       Oct 20, 2020
    时间处理推荐 arrow 库
    hahaba
        6
    hahaba  
    OP
       Oct 20, 2020
    @no1xsyzy 已经解决,不能够写死时区
    no1xsyzy
        7
    no1xsyzy  
       Oct 20, 2020
    @xunbug 哦看你答案原来我完全读错题目了,别介(
    kailyn
        8
    kailyn  
       Oct 20, 2020
    >>> import arrow
    >>> a = "2020-10-20T21:26:06.913277863+09:00"
    >>> b = arrow.get(a)
    >>> b
    <Arrow [2020-10-20T21:26:06.913278+09:00]>
    >>> b.format("YYYY-MM-DD hh:mm:ss")
    '2020-10-20 09:26:06'
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4864 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 00:15 · PVG 08:15 · LAX 17:15 · JFK 20:15
    ♥ Do have faith in what you're doing.