我想验证任何给定格式的日期格式。
例如。用法语:14-déc-2017
。
在普通英语中,14-Dec-2017
采用%d-%b-%Y
格式。我想要的是任何语言格式的日期应该被验证。
在python中,我正在使用datetime
函数来验证英文日期格式。
datetime.strptime('14-Dec-2017', '%d-%b-%Y')
要验证任何其他语言的日期格式,使用哪个库/函数?
答案 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