V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2020-10-20 13:21:39 +08:00 · 1776 次点击
    这是一个创建于 1307 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    不可影响时间精度

    第 1 条附言  ·  2020-10-20 14:01:17 +08:00
    已经解决了,方法如下:

    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 条回复    2020-10-20 21:50:44 +08:00
    hahaba
        1
    hahaba  
    OP
       2020-10-20 13:23:11 +08:00
    有点郁闷,不知如何下手
    no1xsyzy
        2
    no1xsyzy  
       2020-10-20 13:35:56 +08:00
    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  
       2020-10-20 13:38:03 +08:00
    楼主生活在日本?
    Tromso
        4
    Tromso  
       2020-10-20 13:48:09 +08:00
    之前用 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  
       2020-10-20 13:51:11 +08:00
    时间处理推荐 arrow 库
    hahaba
        6
    hahaba  
    OP
       2020-10-20 14:04:01 +08:00
    @no1xsyzy 已经解决,不能够写死时区
    no1xsyzy
        7
    no1xsyzy  
       2020-10-20 15:37:12 +08:00
    @xunbug 哦看你答案原来我完全读错题目了,别介(
    kailyn
        8
    kailyn  
       2020-10-20 21:50:44 +08:00
    >>> 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'
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:56 · PVG 07:56 · LAX 16:56 · JFK 19:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.