Python 日期时间和标准时间

Python 日期时间和标准时间,python,datetime,python-3.x,Python,Datetime,Python 3.x,我在做一个计算器,它告诉你今天和给定日期之间有多少天。日期从文件导入,并以yyyy/mm/dd和dd/mm/yyyy格式写入 我有两个问题: 1:日期的书写格式各不相同。有几个日期是反写的。我如何反转它们?我得到值错误:日期超出了月份的范围。 2:当我尝试用“日期”减去“今天”时,我得到错误TypeError:不支持的操作数类型为-:'str'和'str',当我添加“int”时,我得到ValueError:int()的无效文本,基数为10:'2015,10,23' 有什么建议吗?:) 第二个问题

我在做一个计算器,它告诉你今天和给定日期之间有多少天。日期从文件导入,并以yyyy/mm/dd和dd/mm/yyyy格式写入

我有两个问题:

1:日期的书写格式各不相同。有几个日期是反写的。我如何反转它们?我得到
值错误:日期超出了月份的范围。

2:当我尝试用“日期”减去“今天”时,我得到错误
TypeError:不支持的操作数类型为-:'str'和'str'
,当我添加“int”时,我得到
ValueError:int()的无效文本,基数为10:'2015,10,23'

有什么建议吗?:)


第二个问题是由于过早调用strftime造成的。日期对象可以相互求值,但字符串不能。即

today = date.today()
dates = date(int(year), int(month), int(day))

print((today-dates).days)
此外,您还应该为这两个对象使用日期对象

第二个问题可以通过一些简单的错误检查来解决,比如

if year < day:
  switch(year,day) #pseudo code
如果年<日:
开关(年、日)#伪代码
或者比这更详细的,但你明白了

编辑:
我忘记了比较会返回一个timedelta对象。这些对象仅包含天和更小的时间序列(小时、分钟、秒等)

无需转换为整数如果有两个日期对象,您只需从另一个对象中减去一个,然后查询结果中的天数:

>>> from datetime import date
>>> a = date(2011,11,24)
>>> b = date(2011,11,17)
>>> a-b
datetime.timedelta(7)
>>> (a-b).days
7
它也适用于datetimes——我认为它可以精确到最近的一天:

>>> from datetime import datetime
>>> a = datetime(2011,11,24,0,0,0)
>>> b = datetime(2011,11,17,23,59,59)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6

只需从另一个datetime对象中减去一个datetime对象。与其将其转换为字符串或int.AttributeError:“datetime.timedelta”对象在打印时没有属性“strftime”((今天的日期)。strftime(“%Y,%m,%d”),我不知道日期是什么。当我使用“a=datetime(date.today)”时,我得到了“TypeError:需要一个整数(得到了datetime.date类型)”。当我尝试“a=datetime(int(date.today))”时,我得到了“TypeError:int()参数必须是字符串、类似对象的字节或数字,而不是“datetime.date”
>>> from datetime import datetime
>>> a = datetime(2011,11,24,0,0,0)
>>> b = datetime(2011,11,17,23,59,59)
>>> a-b
datetime.timedelta(6, 1)
>>> (a-b).days
6