我希望接受日期输入到脚本中并遇到如何在用户打算2007年4月5日(或2007年5月4日)时区分040507 // 04052007和050407 // 05042007的难题。美国倾向于遵循第一种形式,而其他国家则倾向于第二种形式。
我知道在某些情况下我可以使用IP / GPS,但我正在寻找一种离线工作的方法,可能来自系统位置/语言?
我主要是在寻找Windows解决方案,但其他人肯定会在将来/向其他人提供帮助。
NB我不认为时区是一个不错的选择,因为同一时区的不同国家可以使用不同的惯例。
答案 0 :(得分:1)
您始终可以使用getdefaultlocale()
检查操作系统默认语言,并且可以使用它来指导您解析日期的方式:
>>>import locale
>>>locale.getdefaultlocale()
('en_US', 'cp1252')
这不太准确,因为无论我的计算机使用什么语言环境,我都会以相同的方式输入日期,但它可以为您提供一个起点。
答案 1 :(得分:1)
根据您的日期格式判断,我认为您的用户手动输入日期。不幸的是,地方与如何输入无关。我在美国,但更喜欢在全年输入我的约会。
一种简单的方法是强制标准或接受输入的方式和测试。
def test():
while True:
testdate = input()
if testdate.isdigit() and len(testdate) == 6:
#do something
break
elif testdate.isdigit() and len(testdate) == 8:
#do something
break
else:
print("Please enter correct format")
这将检查以确保仅输入数字,然后检查长度以确定使用的格式。
您可以通过指定“ddmmyyyy”强制标准,并且只接受8位数输入。
如果我对如何给出日期有误,请告诉我,我会相应更新。
编辑:
如果要通过确定用户的位置来猜测用户的格式,可以使用语言环境模块。
import locale
print(locale.getlocale())
输出:
(' en_US',' UTF-8')
使用区域设置的另一种方法是检查区域设置的国际货币符号。
import locale
locale.setlocale(locale.LC_ALL, "")
print(locale.localeconv()['int_curr_symbol'])
输出:
USD