首页
学习
活动
专区
圈层
工具
发布

帮助
EN

Stack Overflow用户
提问于 2010-08-17 13:17:47
回答 2查看 230关注 0票数 0

我有一个很大的搜索字段,用户可以输入任何文本,然后它就会搜索它。

现在我有一个要求在我的搜索中加入道布。我不会添加一个带有道布选择器的新文本框。我只想让用户能够输入道布的一系列格式,然后它就会找到答案。

IE用户可以使用以下任意组合进行搜索:

  • 1970年8月25日
  • 25-08-1970年
  • 1970/08/25
  • 1970-08-25

我的程序必须计算出每个人的dmy。

有更好的办法吗?

代码语言:javascript
复制
def parse(dob):
    for d in dob.split(" "):
       # find the dob
       if len(d) == 10:
           # its a dob
           if d[0:4].isdigit() # this is the year
               year = d[0:4]
               month = d[5:7]
               day = d[8:10]
            elif d[6:10].isdigit() # this is the year
               day = d[0:2]
               month = d[3:5]
               year= d[6:10]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-17 13:20:57

Python-dateutil应该能让你的生活轻松得多。

代码语言:javascript
复制
from dateutil.parser import parse as dparse
for each in ('25/08/1970', '25-08-1970', '1970/08/25', '1970-08-25'):
    dparse(each)

dparse(each)将返回一个datetime.datetime实例。您可以从datetime实例中获取日期、月份和年份。

更新

作为mp0int 指出,请记住本地化。

票数 2
EN

Stack Overflow用户

发布于 2010-08-17 13:41:18

Dateutil.parser.parse是一个讨厌的函数,必须小心使用,例如

代码语言:javascript
复制
In [16]: parse('2010-05-01')
Out[16]: datetime.datetime(2010, 5, 1, 0, 0)

In [17]: parse('01-05-2010')
Out[17]: datetime.datetime(2010, 1, 5, 0, 0)

本地化是日期时间格式中的一个重要问题。

代码语言:javascript
复制
a = parse('01-05-2010')
a.astimezone(dateutil.tx.tzutc()) # not sure about dateutil.tx.tzutc()

这可能会解决您的问题,但我没有使用它,我也不确定女巫dateutil.tx函数是您所需要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3502784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档