Tôi thấy những so sánh ngày đó có thể được thực hiện và cũng có datetime.timedelta[]
, nhưng tôi đang đấu tranh để tìm hiểu làm thế nào để kiểm tra xem thời gian hiện tại [datetime.datetime.now[]
] sớm hơn, sau này hoặc giống nhau hơn một thời gian xác định [ví dụ: 8 giờ sáng] .
Martineau
Huy hiệu vàng 116K2525 gold badges161 silver badges286 bronze badges
Đã hỏi ngày 2 tháng 12 năm 2009 lúc 8:22Dec 2, 2009 at 8:22
1
Bạn không thể so sánh một thời điểm cụ thể [chẳng hạn như "ngay bây giờ"] với một sự kiện tái phát, không trộn lẫn [8 giờ sáng xảy ra mỗi ngày].
Bạn có thể kiểm tra xem bây giờ là trước hoặc sau 8 giờ sáng hôm nay:
>>> import datetime
>>> now = datetime.datetime.now[]
>>> today8am = now.replace[hour=8, minute=0, second=0, microsecond=0]
>>> now < today8am
True
>>> now == today8am
False
>>> now > today8am
False
Đã trả lời ngày 2 tháng 12 năm 2009 lúc 8:32Dec 2, 2009 at 8:32
2
Bạn có thể sử dụng phương pháp
>>> this_morning = datetime.datetime[2009, 12, 2, 9, 30]
>>> last_night = datetime.datetime[2009, 12, 1, 20, 0]
>>> this_morning.time[] < last_night.time[]
True
0 của các đối tượng >>> this_morning = datetime.datetime[2009, 12, 2, 9, 30]
>>> last_night = datetime.datetime[2009, 12, 1, 20, 0]
>>> this_morning.time[] < last_night.time[]
True
1 để có thời gian trong ngày, bạn có thể sử dụng để so sánh mà không cần tính đến ngày:>>> this_morning = datetime.datetime[2009, 12, 2, 9, 30]
>>> last_night = datetime.datetime[2009, 12, 1, 20, 0]
>>> this_morning.time[] < last_night.time[]
True
Đã trả lời ngày 2 tháng 12 năm 2009 lúc 8:36Dec 2, 2009 at 8:36
Pär Wieslanderpär WieslanderPär Wieslander
Phù bằng vàng 28K752 Huy hiệu bạc53 Huy hiệu Đồng7 gold badges52 silver badges53 bronze badges
1
Bạn có thể so sánh trực tiếp các đối tượng DateTime.DateTime
E.g:
>>> a
datetime.datetime[2009, 12, 2, 10, 24, 34, 198130]
>>> b
datetime.datetime[2009, 12, 2, 10, 24, 36, 910128]
>>> a < b
True
>>> a > b
False
>>> a == a
True
>>> b == b
True
>>>
Đã trả lời ngày 2 tháng 12 năm 2009 lúc 8:26Dec 2, 2009 at 8:26
KimvaiskimvaisKimvais
37.4K16 Huy hiệu vàng107 Huy hiệu bạc140 Huy hiệu đồng16 gold badges107 silver badges140 bronze badges
Ngạc nhiên tôi chưa thấy lớp lót này ở đây:
datetime.datetime.now[].hour == 8
Đã trả lời ngày 20 tháng 11 năm 2019 lúc 10:19Nov 20, 2019 at 10:19
Lấy cảm hứng từ Roger Pate:
import datetime
def todayAt [hr, min=0, sec=0, micros=0]:
now = datetime.datetime.now[]
return now.replace[hour=hr, minute=min, second=sec, microsecond=micros]
# Usage demo1:
print todayAt [17], todayAt [17, 15]
# Usage demo2:
timeNow = datetime.datetime.now[]
if timeNow < todayAt [13]:
print "Too Early"
Đã trả lời ngày 15 tháng 3 năm 2012 lúc 9:14Mar 15, 2012 at 9:14
AndrewrandrewrAndrewR
1521 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges
Bạn có thể sử dụng Dòng thời gian để so sánh tăng thời gian.
>>> import datetime
>>> now = datetime.datetime.now[]
>>> after_10_min = now + datetime.timedelta[minutes = 10]
>>> now > after_10_min
False
Chỉ là sự kết hợp của những câu trả lời này và Roger
Đã trả lời ngày 20 tháng 6 năm 2020 lúc 14:55Jun 20, 2020 at 14:55
Một cách khác để làm điều này mà không cần thêm các phụ thuộc hoặc sử dụng DateTime là chỉ cần thực hiện một số toán học về các thuộc tính của đối tượng thời gian. Nó có hàng giờ, phút, giây, mili giây và múi giờ. Để so sánh rất đơn giản, giờ và phút là đủ.
d = datetime.utcnow[]
t = d.time[]
print t.hour,t.minute,t.second
Tôi không khuyên bạn nên làm điều này trừ khi bạn có trường hợp sử dụng cực kỳ đơn giản. Đối với bất cứ điều gì đòi hỏi nhận thức hoặc nhận thức về thời gian về ngày, bạn nên sử dụng DateTime.
Đã trả lời ngày 3 tháng 4 năm 2013 lúc 1:03Apr 3, 2013 at 1:03
Thomas Dignanthomas DignanThomas Dignan
7,0063 huy hiệu vàng37 Huy hiệu bạc48 Huy hiệu đồng3 gold badges37 silver badges48 bronze badges
DateTime có khả năng so sánh
>>> import datetime
>>> import time
>>> a = datetime.datetime.now[]
>>> time.sleep[2.0]
>>> b = datetime.datetime.now[]
>>> print a < b
True
>>> print a == b
False
Đã trả lời ngày 2 tháng 12 năm 2009 lúc 8:26Dec 2, 2009 at 8:26
Kimvaiskimvaisluc
37.4K16 Huy hiệu vàng107 Huy hiệu bạc140 Huy hiệu đồng23 gold badges125 silver badges171 bronze badges