Python格式化时间 - locale使用

48 篇文章 1 订阅
17 篇文章 0 订阅

之前在爬取后跨境电商平台的数据时,采集的时间需要进行数据清洗,但是由于时间格式多样性,就需要采用修改时区的方式对时间进行格式化处理!
常见的格式如下:
美国时区:

June 11, 2021

德国时区:

19. Dezember 2020

英国时区:

05 March 2021

除了以上三种格式还会有其他时间格式!

设置时区

如果在设置时区过程中出现以下错误:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "us")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/Python-3.6/lib/python3.6/locale.py", line 598, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

以上这种错误很可能是你用了一种系统不支持的语言。查看系统当前可用语言:

locale -a

查询出可用的语言,然后针对性的设置到脚本中,上面分异常修复后的结果为:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "en_US")
'en_US'

如果的德国的那么就可以采用:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "de_DE")
'de_DE'
时间格式实例
  • 1.美国时间
>>> from datetime import datetime
>>> date = 'June 11, 2021'
>>> date_str = datetime.strptime(date, '%B %d, %Y').strftime('%Y-%m-%d')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'June 11, 2021' does not match format '%B %d, %Y'

在没有设置时区的情况下,格式化时间会出错!

解决方案

格式化前先设置好时区:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, "en_US")
'en_US'
>>> date = 'June 11, 2021'
>>> date_str = datetime.strptime(date, '%B %d, %Y').strftime('%Y-%m-%d')
>>> date_str
'2021-06-11'
  • 2.德国时间
>>> from datetime import datetime
>>> date = '19. Dezember 2020'
>>> date_str = datetime.strptime(date, '%d. %B %Y').strftime('%Y-%m-%d')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'June 11, 2021' does not match format '%d. %B %Y'

在没有设置时区的情况下,格式化时间会出错!

解决方案

格式化前先设置好时区:

>>> date = '19. Dezember 2020'
>>> import locale
>>> locale.setlocale(locale.LC_ALL, "de_DE")
'de_DE'
>>> date_str = datetime.strptime(date, '%d. %B %Y').strftime('%Y-%m-%d')
>>> date_str
'2020-12-19'
时间格式化参数
参数含义
%H小时(以00-23来表示)
%I小时(以01-12来表示)。
%K小时(以0-23来表示)。
%l小时(以0-12来表示)。
%M分钟(以00-59来表示)。
%PAM或PM。
%r时间(含时分秒,小时以12小时AM/PM来表示)。
%s总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S秒(以本地的惯用法来表示)。
%T时间(含时分秒,小时以24小时制来表示)。
%X时间(以本地的惯用法来表示)。
%Z市区。
%a星期的缩写。
%A星期的完整名称。
%b月份英文名的缩写。
%B月份的完整英文名称。
%c日期与时间。只输入date指令也会显示同样的结果。
%d日期(以01-31来表示)。
%D日期(含年月日)。
%j该年中的第几天。
%m月份(以01-12来表示)。
%U该年中的周数。
%w该周的天数,0代表周日,1代表周一,异词类推。
%x日期(以本地的惯用法来表示)。
%y年份(以00-99来表示)。
%Y年份(以四位数来表示)。
%n在显示时,插入新的一行。
%t在显示时,插入tab。
MM月份(必要)。
DD日期(必要)。
hh小时(必要)。
mm分钟(必要)。
CC年份的前两位数(选择性)。
YY年份的后两位数(选择性)。
ss秒(选择性)。
-d<字符串>显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u显示GMT。
–help在线帮助。
–version显示版本信息。

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值