Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有直接的方法可以忽略python datetime对象的某些部分?_Python_Datetime - Fatal编程技术网

有没有直接的方法可以忽略python datetime对象的某些部分?

有没有直接的方法可以忽略python datetime对象的某些部分?,python,datetime,Python,Datetime,我试图比较两个datetime对象,但忽略了年份。例如,给定 a = datetime.datetime(2015,07,04,01,01,01) b = datetime.datetime(2016,07,04,01,01,01) 我希望a==b通过忽略年份返回True。要进行这样的比较,我想我可以创建具有相同年份的新datetime对象,如: c = datetime.datetime(2014,a.month,a.day,a.hour,a.minute,a.second) d = dat

我试图比较两个datetime对象,但忽略了年份。例如,给定

a = datetime.datetime(2015,07,04,01,01,01)
b = datetime.datetime(2016,07,04,01,01,01)
我希望a==b通过忽略年份返回True。要进行这样的比较,我想我可以创建具有相同年份的新datetime对象,如:

c = datetime.datetime(2014,a.month,a.day,a.hour,a.minute,a.second)
d = datetime.datetime(2014,b.month,b.day,b.hour,b.minute,b.second)
然而,这看起来并不是很像蟒蛇。有没有一种更直接的方法来做我所问的比较

我正在使用python 3.4

(a.month, a.day, a.hour, a.minute, a.second == 
 b.month, b.day, b.hour, b.minute, b.second)
一种不太明确的方法是比较时间元组中的对应元素:

a.timetuple()[1:6] == b.timetuple()[1:6]

返回- 1,存在差异。

您也可以考虑比较包含在比较中希望包含的字段的格式化日期字符串。这允许您在使用字段的缩短版本时稍微显式(而不是访问

a.year
a.month
等)

尝试:


不够明确
a=dt.datetime.now()
b=dt.datetime.now()
a.replace(year=1)==b.replace(year=1)
由于微秒的原因,结果为假
def cmp(a,b):
 return (a > b) - (a < b)

d1=(2015,7,4,1,1,1)
d2=(2016,7,4,1,1,1)

cmp(list(d1)[1:],list(d2)[1:])
d1=(2015,7,4,1,1,1)
d2=(2015,2,4,1,1,1)

cmp(list(d1)[1:], list(d2)[1:])
from datetime import datetime

date_string = '%m %d %H %M %S'
a = datetime(2015, 7, 4, 1, 1, 1)
b = datetime(2016, 7, 4, 1, 1, 1)
print(a.strftime(date_string) == b.strftime(date_string))  # True
a.replace(year=1,microsecond=0) == b.replace(year=1,microsecond=0)
In [70]: a
Out[70]: datetime.datetime(2015, 7, 4, 0, 0)

In [71]: b
Out[71]: datetime.datetime(2016, 7, 4, 0, 0)

In [72]: def my_date_cmp(a, b):
   ....:     return a.replace(year = b.year) == b
   ....: 

In [73]: my_date_cmp(a, b)
Out[73]: True