python库从给定的字符串中提取日期格式

时间:2016-11-04 07:46:18

标签: python datetime

我们有python库datetime库,使用以下方法将字符串日期转换为指定格式的日期类型:

var funcs = [];
function tempFunc(i){
    return function(){
        console.log("My value: " + i);
    };
}
for (var i = 0; i < 3; i++) {  
    funcs[i] = tempFunc(i);                                     
}
for (var j = 0; j < 3; j++) {
    funcs[j]();                        
}

但是我们有任何库,给定日期字符串建议日期的格式。 对于给出的例子:

  

2016年12月21日

作为输入,给出输出:

  

%Y-%间 - %d

1 个答案:

答案 0 :(得分:1)

我不知道具有您所要求的功能的库,但编写一个将返回给定字符串上的匹配格式的函数并不困难。

虽然没有克服了以多种格式匹配字符串的问题。

以下是基于数字日期的一些静态通用格式的示例。

date_formats = ["%Y-%m-%d", "%d-%m-%Y", "%m-%d-%Y", "%Y/%m/%d", "%d/%m/%Y", "%m/%d/%Y", "%Y.%m.%d", "%d.%m.%Y", "%m.%d.%Y", "%c", "%x"]

def string_to_date(str):
    match = []
    for fmt in date_formats:
        try:
            datetime.strptime(str, fmt)
        except ValueError as e:
            print(e)
            continue
        match.append(fmt)
    return match

一些代表性的输出:

print(string_to_date("11.12.2015"))  # ['%d.%m.%Y', '%m.%d.%Y']
print(string_to_date("21/12/2015"))  # ['%d/%m/%Y']

当然,您可以编写代码以动态构建格式,但在这种情况下,我认为它过于宽泛。

如果您想采用动态方法,我建议先在脚本中捕获可能的分隔符,然后尝试构建格式。