请注意,我没有研究所有可用的库,只是想为其他人解决问题提供一个起点。
在所有示例中,我将使用以下本地化字符串:
dt_str = "Thu 3 Apr 2014 13:19:52" # en_US
1方法datetime.datetime'
这是最简单的方法,但是如果您使用的语言环境不是默认的语言环境,那么它将变得很难使用。
有关语法的信息可以找到
here
.
import datetime
dt = datetime.datetime.strptime(dt_str,
"%a %d %b %Y %H:%M:%S")
# datetime.datetime(2014, 4, 3, 13, 19, 52)
s = dt.strftime("%a %-d %b %Y %H:%M:%S")
# 'Thu 3 Apr 2014 13:19:52'
如果要解析或格式化其他区域设置,则必须更改全局区域设置,这可能会导致不希望的副作用(我不推荐这种方法。)
import datetime
import locale
locale.setlocale(locale.LC_TIME, "de_DE.UTF-8")
dt = datetime.datetime.strptime("Do 3 Apr 2014 13:19:52",
"%a %d %b %Y %H:%M:%S")
# datetime.datetime(2014, 4, 3, 13, 19, 52)
s = dt.strftime("%a %-d %b %Y %H:%M:%S")
# 'Do 3 Apr 2014 13:19:52'
arrow
允许您传递区域设置(否则使用“en\u US”)。
import arrow # installed via pip
import datetime
### localized string -> datetime
a_dt = arrow.get(dt_str,
"ddd D MMM YYYY H:mm:ss",
locale="en_US") # "en_US" is also the default, so this is just for clarification
dt = a_dt.datetime
# datetime.datetime(2014, 4, 3, 13, 19, 52, tzinfo=tzutc())
### datetime -> localized string
a_s = arrow.get(datetime.datetime(2014, 5, 17, 14, 0, 0))
s = a_s.format("ddd D MMM YYYY H:mm:ss",
locale="en_US") # "en_US" is also the default, so this is just for clarification
# 'Sat 17 May 2014 14:00:00'
三。python库“babel”(主要用于格式化)
力量
babel
格式是否正确(不幸的是
it can not
parse
any pattern
Only the format "short" seems reliable
.)
import babel.dates # 'babel' installed via pip
import datetime
dt = datetime.datetime(2014, 4, 3, 13, 19, 52)
# parsing is the problem with babel, therefore I created the datetime object directly.
s = babel.dates.format_datetime(dt,
"EEE d MMM yyyy H:mm:ss",
locale="en_US")
# 'Thu 3 Apr 2014 13:19:52'
dateparser
非常强大。它能够在较长的文本中查找日期,并且支持非公历系统,仅举几个特性。
import dateparser # installed via pip
dt = dateparser.parse(dt_str,
date_formats=["%a %d %b %Y %H:%M:%S"],
languages=["en"])
# datetime.datetime(2014, 4, 3, 13, 19, 52)
5最后但并非最不重要