如何解析已使用不同区域设置格式化的日期
How to parse a date that has been formatted with different locale
我非常聪明 android phone 已经生成了日期字段格式为德语语言环境的电子邮件,例如Date: Di., 20 Dez. 2011 23:28:49 +0100
。我将 phone 切换为英语以阻止它这样做,但是已经写了很多电子邮件。
其他一些邮件程序无法处理此问题,因为它没有安装所有这些语言环境。结果它将主要 date-time 设置为 Thu Jan 1 01:00:00 1970
并且当我按日期排序时电子邮件似乎消失了:-(
所以我想通过重写 header 来修复这些电子邮件。但是我怎样才能解析德国日期呢? date
命令支持输出区域设置 (date +%c
) 但似乎忽略了输入区域设置:
$ date -d "08 Dec 2015"
Tue Dec 8 00:00:00 CET 2015
$ LC_TIME=de_DE.utf8 date -d "08 Dez 2015"
date: invalid date ‘08 Dez 2015’
有什么想法吗?
如果您安装了 Python 和 de
语言环境,一种方法是调用
% python /path/to/convert.py "08 Dez 2015"
2015-12-08 00:00:00
其中 convert.py
是这个 python 脚本:
import sys, locale, datetime as DT
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
print(DT.datetime.strptime(sys.argv[1], '%d %b %Y'))
我非常聪明 android phone 已经生成了日期字段格式为德语语言环境的电子邮件,例如Date: Di., 20 Dez. 2011 23:28:49 +0100
。我将 phone 切换为英语以阻止它这样做,但是已经写了很多电子邮件。
其他一些邮件程序无法处理此问题,因为它没有安装所有这些语言环境。结果它将主要 date-time 设置为 Thu Jan 1 01:00:00 1970
并且当我按日期排序时电子邮件似乎消失了:-(
所以我想通过重写 header 来修复这些电子邮件。但是我怎样才能解析德国日期呢? date
命令支持输出区域设置 (date +%c
) 但似乎忽略了输入区域设置:
$ date -d "08 Dec 2015"
Tue Dec 8 00:00:00 CET 2015
$ LC_TIME=de_DE.utf8 date -d "08 Dez 2015"
date: invalid date ‘08 Dez 2015’
有什么想法吗?
如果您安装了 Python 和 de
语言环境,一种方法是调用
% python /path/to/convert.py "08 Dez 2015"
2015-12-08 00:00:00
其中 convert.py
是这个 python 脚本:
import sys, locale, datetime as DT
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
print(DT.datetime.strptime(sys.argv[1], '%d %b %Y'))