Hướng dẫn how do you check if a time is between two times in python? - làm cách nào để kiểm tra xem thời gian có nằm giữa hai lần trong python không?

Hãy nhìn vào gói py-time-Between: https://pypi.org/project/py-time-beltween/

Trường hợp kiểm tra:

from datetime import time
from timebetween import is_time_between


def test_is_time_between():
    t, s, e = time(0), time(0), time(0)
    assert is_time_between(t, s, e)

    t, s, e = time(0, 0, 0, 1), time(0), time(0, 0, 0, 2)
    assert is_time_between(t, s, e)

    t, s, e = time(0, 0, 0, 1), time(0, 0, 0, 1), time(0, 0, 0, 2)
    assert is_time_between(t, s, e)

    t, s, e = time(0, 0, 0, 2), time(0, 0, 0, 1), time(0, 0, 0, 2)
    assert is_time_between(t, s, e)

    t, s, e = time(0, 0, 1), time(23, 59, 59), time(0, 0, 2)
    assert is_time_between(t, s, e)

    t, s, e = time(12, 0, 0), time(23, 59, 59), time(0, 0, 0)
    assert is_time_between(t, s, e)

    t, s, e = time(23, 59, 57), time(23, 59, 59), time(23, 59, 57)
    assert is_time_between(t, s, e)

    t, s, e = time(23, 59, 58), time(23, 59, 59), time(23, 59, 57)
    assert not is_time_between(t, s, e)

    t, s, e = time(22), time(22), time(5, 59, 59)
    assert is_time_between(t, s, e)

Làm thế nào để kiểm tra xem thời gian hiện tại có trong một phạm vi trong Python không?

Xây dựng vấn đề

Với dấu thời gian x như thời gian hiện tại và khoảng thời gian được đánh dấu bằng dấu thời gian startend.a timestamp x such as the current time and a time interval marked with start and end timestamps.

Mục tiêu: Tạo một chức năng kiểm tra xem dấu thời gian nhất định có rơi vào khoảng [start, end] hay không, do đó

import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
0T và
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
1.
: Create a function that checks whether the given timestamp falls in the interval [start, end], so that
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
0t and
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
1.

Các ràng buộc: Nếu khoảng thời gian trống khi

import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
2 và
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
3, hàm sẽ trả về
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
4.
: If the interval is empty when
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
2 and
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
3, the function should return
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
4.

Phương pháp 1: So sánh các đối tượng DateTime

Các đối tượng DateTime có thể so sánh, vì vậy bạn có thể so sánh các đối tượng

import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
5 bằng cách sử dụng các toán tử so sánh
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
6,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
7,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
8,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
9 và
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
0. Do đó, bạn có thể sử dụng biểu thức
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
1 để kiểm tra xem thời gian hiện tại có rơi vào khoảng [start, end] khi giả sử rằng start, end
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
5 là các đối tượng
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
5.

Để kiểm tra xem thời gian hiện tại có giảm trong một khoảng cụ thể không, hãy sử dụng các bước sau (xem mã):

  1. Nhập mô -đun
    import datetime
    
    def time_in_range(start, end, current):
        """Returns whether current is in the range [start, end]"""
        return start <= current <= end
    
    
    start = datetime.time(0, 0, 0)
    end = datetime.time(23, 55, 0)
    current = datetime.datetime.now().time()
    
    print(time_in_range(start, end, current))
    # True (if you're not a night owl) ;)
    5.
  2. Tạo một hàm thời gian_in_range có ba đối số, khởi động, kết thúc và thời gian hiện tại và trả về liệu thời gian hiện tại có rơi vào khoảng thời gian [start, end] hay không.
  3. Nếu khoảng thời gian trống, nó chỉ cần kiểm tra xem thời gian hiện tại có lớn hơn thời gian bắt đầu hay nhỏ hơn thời gian kết thúc.
  4. Tạo các đối tượng bắt đầu và dừng DateTime bằng các phương thức
    from datetimerange import DateTimeRange
    
    time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
    print("2022-03-22T10:05:00+0900" in time_range)
    print("2042-03-22T10:15:00+0900" in time_range)
    
    time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
    print(time_range_smaller in time_range)
    9. Để có được thời gian hiện tại, hãy sử dụng
    True
    False
    True
    0.
  5. Gọi
    True
    False
    True
    1 để kiểm tra xem thời gian hiện tại có giảm trong khoảng thời gian [start, end] không.

Đây là mã:

import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)

Mã trả về

True
False
True
3 Nếu bạn chạy nó giữa (HH: mm: SS) 00:00:00 và 23:55:00 trên máy tính của bạn. Chỉ khi bạn chạy nó trong khoảng thời gian từ 23:55:00 đến 23:59:59, nó sẽ trả lại
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
4.00:00:00 and 23:55:00 on your computer. Only if you run it between 23:55:00 and 23:59:59 it returns
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
4.

Phương pháp 2: Datetimerange

True
False
True
5 là thư viện Python cho phép bạn kiểm tra xem thời gian có nằm trong phạm vi thời gian bằng ba bước sau không:

  1. Cài đặt mô -đun với
    True
    False
    True
    6 trong vỏ hoặc thiết bị đầu cuối hệ điều hành của bạn.
  2. Tạo một đối tượng phạm vi thời gian có tên
    True
    False
    True
    7 bằng cách sử dụng hàm tạo
    True
    False
    True
    8.
  3. Sử dụng từ khóa
    True
    False
    True
    9 để kiểm tra xem dấu thời gian nhất định hay thậm chí phạm vi thời gian nhỏ hơn nằm trong đối tượng phạm vi thời gian như
    def time_in_range(start, end, current):
        """Returns whether current is in the range [start, end]"""
        return current in DateTimeRange(start, end)
    
    print(time_in_range("2027-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900", "2042-03-22T10:15:00+0900"))
    # True
    0.

Tài liệu cung cấp mã ví dụ sau:

from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)

Ở đây, đầu ra của mã mẫu này:

True
False
True

Thời gian đầu tiên nằm trong phạm vi vì năm 2022 nằm trong [2020, 2025].

Dấu thời gian thứ hai không rơi vào phạm vi [2020, 2025] bởi vì nó liên quan đến năm 2042 (có thể là tương lai khi bạn đọc điều này).

Khoảng thời gian thứ ba là một khoảng thời gian nhỏ hơn [2021, 2022] bị chi phối bởi [2020, 2025]. Do đó, nó nằm trong khoảng thời gian và giá trị trả về là

True
False
True
3.

Nếu bạn cần chức năng để giải quyết chính xác công thức vấn đề, hãy sử dụng mã sau:

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return current in DateTimeRange(start, end)

print(time_in_range("2027-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900", "2042-03-22T10:15:00+0900"))
# True

Mã sử ​​dụng các biểu diễn chuỗi yyyy-mm-ddthh: mm: ss+millisecs để chỉ định ba dấu thời gian start, end

from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
5. YYYY-MM-DDTHH:MM:SS+millisecs to specify the three timestamps start, end, and
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
5.

Bản tóm tắt

Các đối tượng DateTime có thể so sánh, vì vậy bạn có thể so sánh các đối tượng

import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
5 bằng cách sử dụng các toán tử so sánh
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
6,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
7,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
8,
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
9 và
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
0.

Do đó, bạn có thể sử dụng biểu thức

from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
1 để kiểm tra xem thời gian hiện tại có rơi vào khoảng [start, end] khi giả sử rằng start, end
from datetimerange import DateTimeRange

time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900")
print("2022-03-22T10:05:00+0900" in time_range)
print("2042-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
5 là các đối tượng
import datetime

def time_in_range(start, end, current):
    """Returns whether current is in the range [start, end]"""
    return start <= current <= end


start = datetime.time(0, 0, 0)
end = datetime.time(23, 55, 0)
current = datetime.datetime.now().time()

print(time_in_range(start, end, current))
# True (if you're not a night owl) ;)
5.

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

True
False
True
5 để kiểm tra xem thời gian có nằm trong phạm vi thời gian hay không nhưng bạn cần cài đặt nó trước bằng
True
False
True
6.

Lập trình viên hài hước

Q: What is the object-oriented way to become wealthy?
💰

A: Inheritance.

Hướng dẫn how do you check if a time is between two times in python? - làm cách nào để kiểm tra xem thời gian có nằm giữa hai lần trong python không?

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.