验证任何语言的日期格式(法语,中文,土耳其语)

时间:2017-12-12 06:10:44

标签: python date-format

我想验证任何给定格式的日期格式。 例如。用法语:14-déc-2017。 在普通英语中,14-Dec-2017采用%d-%b-%Y格式。我想要的是任何语言格式的日期应该被验证。

在python中,我正在使用datetime函数来验证英文日期格式。

datetime.strptime('14-Dec-2017', '%d-%b-%Y')

要验证任何其他语言的日期格式,使用哪个库/函数?

2 个答案:

答案 0 :(得分:3)

我认为你需要locale模块:

import time
import locale

locales = ['fr', 'zh', 'tr'] # french, chinese, turkish

for loc in locales:
    locale.setlocale(locale.LC_ALL, loc)
    print(time.strftime("%d-%b-%Y"))

12-déc.-2017
12-12月-2017
12-Ara-2017
>>> 

我在Windows 10上试过了。

编辑:如果您使用的是Ubuntu,请在命令行上运行sudo locale-gen 'fr' 'zh' 'tr'

之后,请尝试下面的代码:

import time
import locale

locales = ['fr_FR.utf-8', 'zh_CN.utf-8', 'tr_TR.utf-8'] # french, chinese, turkish

for loc in locales:
    locale.setlocale(locale.LC_ALL, loc)
    print(time.strftime("%d-%b-%Y"))

12-déc.-2017
12-12月-2017
12-Ara-2017
>>>

根据@tripleee的建议,我在Windows子系统Linux上尝试了上述命令和Python代码,并按预期运行。

编辑2 :也许您需要一个采用区域设置和格式的函数,并以指定的格式返回日期:

import time
import locale

def get_date_in(loc, df):
    formats = ["%d-%b-%Y", "%d %b %Y"]  # Update formats here

    for f in formats:
        if f == df:
            locale.setlocale(locale.LC_ALL, loc)
            loc_date = time.strftime(f)
            return loc_date

在Windows 10上演示:

french = get_date_in('fr', "%d-%b-%Y")
chinese = get_date_in('zh', "%d %b %Y")
turkish = get_date_in('tr', "%d-%b-%Y")

print(french)
print(chinese)
print(turkish)

12-déc.-2017
12 12月 2017
12-Ara-2017
>>> 

在Ubuntu 16.04上演示:

french = get_date_in('fr_FR.utf-8', "%d-%b-%Y")
chinese = get_date_in('zh_CN.utf-8', "%d %b %Y")
turkish = get_date_in('tr_TR.utf-8', "%d-%b-%Y")

print(french)
print(chinese)
print(turkish)

12-déc.-2017
12 12月 2017
12-Ara-2017
>>> 

希望有所帮助

答案 1 :(得分:1)

Python 3.5.1 (default, Dec 26 2015, 18:08:53) >>> from locale import setlocale, LC_ALL >>> setlocale(LC_ALL, "fr_FR.utf-8") 'fr_FR.utf-8' >>> import datetime >>> datetime.datetime.strptime('12-déc-2017', '%d-%b-%Y') datetime.datetime(2017, 12, 12, 0, 0) 的解释依赖于语言环境。要获得法语解释,请使用法语区域设置。

Sub test()
Dim f As String
Dim ab As String

f = ThisWorkbook.Worksheets("Sheet1").Range("F1").Value
ab = ThisWorkbook.Worksheets("Sheet1").Range("AB1").Value

If f = ab Then
  ThisWorkbook.Worksheets("Sheet1").Range("S1").Value = "xxxx"
End If

End Sub