Hướng dẫn python compare date and datetime - python so sánh ngày và giờ

Đây là một đoạn trích nhỏ mà tôi đang thử thực thi:

>>> from datetime import *
>>> item_date = datetime.strptime('7/16/10', "%m/%d/%y")
>>> from_date = date.today()-timedelta(days=3)
>>> print type(item_date)

>>> print type(from_date)

>>> if item_date > from_date:
...     print 'item is newer'
...
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't compare datetime.datetime to datetime.date

Tôi dường như không thể so sánh ngày và các giá trị DateTime. Điều gì sẽ là cách tốt nhất để so sánh những điều này? Tôi nên chuyển đổi DateTime cho đến ngày hoặc ngược lại? Làm thế nào để tôi chuyển đổi giữa chúng.

(Một câu hỏi nhỏ nhưng nó có vẻ hơi khó hiểu.)

Hướng dẫn python compare date and datetime - python so sánh ngày và giờ

Thanh thản

33.7K19 Huy hiệu vàng114 Huy hiệu bạc111 Huy hiệu đồng19 gold badges114 silver badges111 bronze badges

hỏi ngày 19 tháng 7 năm 2010 lúc 6:58Jul 19, 2010 at 6:58

Hướng dẫn python compare date and datetime - python so sánh ngày và giờ

Mridang Agarwallamridang AgarwallaMridang Agarwalla

41.8K70 Huy hiệu vàng214 Huy hiệu bạc372 Huy hiệu đồng70 gold badges214 silver badges372 bronze badges

1

Sử dụng phương thức .date() để chuyển đổi DateTime thành một ngày:

if item_date.date() > from_date:

Ngoài ra, bạn có thể sử dụng

if item_date.date() > from_date:
0 thay vì
if item_date.date() > from_date:
1. Bạn đã có thể sử dụng

from_date = from_date.replace(hour=0, minute=0, second=0, microsecond=0)

Để loại bỏ phần thời gian sau đó.

Đã trả lời ngày 19 tháng 7 năm 2010 lúc 7:02Jul 19, 2010 at 7:02

Kennytmkennytmkennytm

500K101 Huy hiệu vàng1064 Huy hiệu bạc995 Huy hiệu Đồng101 gold badges1064 silver badges995 bronze badges

2

Tôi đang cố gắng so sánh ngày ở định dạng chuỗi như '20110930''20110930'

benchMark = datetime.datetime.strptime('20110701', "%Y%m%d") 

actualDate = datetime.datetime.strptime('20110930', "%Y%m%d")

if actualDate.date() < benchMark.date():
    print True

Omar

1.4933 huy hiệu vàng20 Huy hiệu bạc36 Huy hiệu đồng3 gold badges20 silver badges36 bronze badges

Đã trả lời ngày 29 tháng 9 năm 2011 lúc 12:45Sep 29, 2011 at 12:45

1

Dưới đây là một cách khác, lưu giữ thông tin trong trường hợp cả hai đầu vào đều là DateTime và không phải ngày, "bị đánh cắp" từ một bình luận tại không thể so sánh DateTime.Datetime sang DateTime.Date ... Chuyển đổi ngày thành DateTime bằng cách sử dụng cấu trúc này:

datetime.datetime(d.year, d.month, d.day)

Suggestion:

from datetime import datetime

def ensure_datetime(d):
    """
    Takes a date or a datetime as input, outputs a datetime
    """
    if isinstance(d, datetime):
        return d
    return datetime.datetime(d.year, d.month, d.day)

def datetime_cmp(d1, d2):
    """
    Compares two timestamps.  Tolerates dates.
    """
    return cmp(ensure_datetime(d1), ensure_datetime(d2))

Đã trả lời ngày 24 tháng 4 năm 2015 lúc 6:20Apr 24, 2015 at 6:20

Tobixentobixentobixen

3,7341 Huy hiệu vàng18 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge18 silver badges20 bronze badges

Trong trường hợp của tôi, tôi nhận được hai đối tượng và tôi không biết đó là ngày hoặc các đối tượng thời gian. Chuyển đổi cho đến nay sẽ không tốt vì tôi sẽ bỏ thông tin - hai đối tượng thời gian có cùng ngày nên được sắp xếp chính xác. Tôi ổn với các ngày được sắp xếp trước khi DateTime có cùng ngày.

Tôi nghĩ rằng tôi sẽ sử dụng thời gian trước khi so sánh:

>>> foo=datetime.date(2015,1,10)
>>> bar=datetime.datetime(2015,2,11,15,00)
>>> foo.strftime('%F%H%M%S') > bar.strftime('%F%H%M%S')
False
>>> foo.strftime('%F%H%M%S') < bar.strftime('%F%H%M%S')
True

Không thanh lịch, nhưng nên làm việc. Tôi nghĩ sẽ tốt hơn nếu Python không nêu ra lỗi, tôi thấy không có lý do tại sao một DateTime không nên so sánh với một ngày. Hành vi này là nhất quán trong Python2 và Python3.

Đã trả lời ngày 14 tháng 4 năm 2015 lúc 6:12Apr 14, 2015 at 6:12

Tobixentobixentobixen

3,7341 Huy hiệu vàng18 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge18 silver badges20 bronze badges

Trong trường hợp của tôi, tôi nhận được hai đối tượng và tôi không biết đó là ngày hoặc các đối tượng thời gian. Chuyển đổi cho đến nay sẽ không tốt vì tôi sẽ bỏ thông tin - hai đối tượng thời gian có cùng ngày nên được sắp xếp chính xác. Tôi ổn với các ngày được sắp xếp trước khi DateTime có cùng ngày.

from datetime import datetime, date

now = datetime.now()
today = date.today()

# compare now with today
two_month_earlier = date(now.year, now.month - 2, now.day)
if two_month_earlier > today:
    print(True)

two_month_earlier = datetime(now.year, now.month - 2, now.day)
if two_month_earlier > now:
   print("this will work with datetime too")

Tôi nghĩ rằng tôi sẽ sử dụng thời gian trước khi so sánh:Nov 11, 2019 at 14:32

Hướng dẫn python compare date and datetime - python so sánh ngày và giờ

Không thanh lịch, nhưng nên làm việc. Tôi nghĩ sẽ tốt hơn nếu Python không nêu ra lỗi, tôi thấy không có lý do tại sao một DateTime không nên so sánh với một ngày. Hành vi này là nhất quán trong Python2 và Python3.Peko Chan

Đã trả lời ngày 14 tháng 4 năm 2015 lúc 6:125 silver badges14 bronze badges

Tạo và đối tượng tương tự để so sánh hoạt động quá Ex:

Đã trả lời ngày 11 tháng 11 năm 2019 lúc 14:32

>>> from datetime import datetime               
>>> date_obj=datetime.utcnow().date() 
>>> type(date_obj)

>>> datetime_obj=datetime.utcnow()    
>>> type(datetime_obj)            

>>> datetime_obj.timetuple()          
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=11, tm_hour=2, tm_min=12, tm_sec=43, tm_wday=1, tm_yday=284, tm_isdst=-1)
>>> date_obj.timetuple()     
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=284, tm_isdst=-1)
>>> type(datetime_obj.timetuple())

>>> type(date_obj.timetuple()) 

>>> date_obj.timetuple()

Peko Chanpeko ChanOct 11 at 3:07

2675 Huy hiệu bạc14 Huy hiệu Đồngmike

Tôi đã có bạn anh bạn3 bronze badges

Làm thế nào để python so sánh ngày và thời gian?

Đã trả lời ngày 11 tháng 10 lúc 3:07 . For example, the %Y/%m/%d format codes are for yyyy-mm-dd . Use comparison operators (like < , > , <= , >= , != , etc.) to compare dates in Python.

Làm thế nào chúng ta có thể so sánh ngày trong Python?

Bạn có thể sử dụng bằng toán tử so sánh = để kiểm tra xem một đối tượng DateTime có tương tự như các đối tượng khác không.Trong chương trình sau, chúng tôi khởi tạo hai đối tượng DateTime, sau đó kiểm tra xem cả hai đối tượng DateTime có cùng ngày và thời gian không.use equal to comparison operator = to check if one datetime object is has same value as other. In the following program, we initialize two datetime objects, and then check if both datetime objects have same date and time.

Làm thế nào tôi có thể so sánh hai ngày?

Để so sánh hai ngày, chúng tôi đã sử dụng phương thức so sánh ().Nếu cả hai ngày bằng nhau, nó in, cả hai ngày đều bằng nhau ...
0: Nếu cả hai ngày bằng nhau ..
Giá trị nhỏ hơn 0: Nếu ngày trước ngày đối số ..
Giá trị lớn hơn 0: Nếu ngày sau ngày đối số ..