Parse date and time from string with time zone using Arrow

后端 未结 4 2142
梦如初夏
梦如初夏 2021-02-20 12:08

I have

import arrow
s = \'2015/12/1 19:00:00\'
tz = \'Asia/Hong_Kong\'

How can I parse this with Arrow such that I get an Arrow object with the

相关标签:
4条回答
  • 2021-02-20 12:17

    I'm not qualified yet to add a comment and would just like to share a bit simpler version of the answer with timezone str expression.

    s = '2015/12/1 19:00:00'
    tz = 'Asia/Hong_Kong'
    arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=tz)
    

    or simply local timezone:

    arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='local')
    

    or specified ISO-8601 style:

    arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='+08:00')
    
    0 讨论(0)
  • 2021-02-20 12:23

    Try this:

    arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=dateutil.tz.gettz(tz))
    
    0 讨论(0)
  • 2021-02-20 12:34

    Per the current documentation, you can also provide a default timezone for arrow.get(), e.g.:

    s = '2015/12/1 19:00:00'
    tz = 'Asia/Hong_Kong'
    arrow.get(s, tzinfo=tz)
    

    However, as of right now (version 0.12.1) there is a shortcoming where that doesn't work for string-based date parsing. Fortunately, this has been fixed, so the next release of Arrow will integrate this fix.

    0 讨论(0)
  • 2021-02-20 12:36

    This is working for me as of 0.10.0:

    import arrow
    s = '2015/12/1 19:00:00'
    tz = 'Asia/Hong_Kong'
    
    arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
    # <Arrow [2015-12-01T19:00:00+08:00]>
    

    However, arrow.get('2018-01-29 14:46', tzinfo='US/Central') (i.e. without the format string) ignores the tzinfo parameter.

    0 讨论(0)
提交回复
热议问题