如何解析使用不同语言环境格式化的日期

时间:2015-12-08 15:32:44

标签: linux parsing datetime command-line locale

我非常智能的Android手机已生成电子邮件,其中日期字段使用德语区域设置格式化,例如Date: Di., 20 Dez. 2011 23:28:49 +0100。我把手机换成了英文,以阻止它这样做,但已经写了很多电子邮件。

其他一些邮件程序无法处理此问题,因为它没有安装所有这些语言环境。因此,它将主日期时间设置为Thu Jan 1 01:00:00 1970,当我按日期排序时,电子邮件似乎消失了:-( 所以我想通过重写标题来修复这些电子邮件。但是我如何解析德国日期呢? 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’

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果安装了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'))