Làm thế nào để tôi có được ngày cuối cùng trong python?

Bài viết này sẽ thảo luận về các phương pháp hay nhất để phân tích ngày và nhận một tháng, ngày hoặc năm cụ thể trong quá khứ hoặc tương lai

Chúng tôi sẽ sử dụng các thư viện Python khác nhau để thao tác ngày và giờ. Ngoài gói ngày giờ tiêu chuẩn [tài liệu], chúng tôi sẽ tận dụng các mô-đun khác như dateparser và dateutil để trích xuất các ngày được bản địa hóa trong chuỗi

Ví dụ: các gói sẽ có thể phân tích các chuỗi như “20 ngày trước”, “hai tháng hai ngày trước”, “hôm qua”, “trưa 445 ngày trước”, v.v.

nội dung

  • 1 Lấy ngày đầu tiên và ngày cuối cùng của bất kỳ tháng nào
  • 2 Lấy ngày cuối cùng của tháng trước
  • 3 Lấy ngày trong tuần cho một ngày nhất định
    • 3. 1 Cách tiếp cận #1 Ngày sử dụng. strftime[định dạng]
    • 3. 2 Cách tiếp cận #2 Ngày sử dụng. ngày trong tuần[]
  • 4 Ngày thông minh
    • 4. 1 Phân tích ngày tương đối bằng thư viện dateparser
    • 4. 2 Phân tích ngày bằng gói dateutil

Nhận ngày đầu tiên và ngày cuối cùng của bất kỳ tháng nào

Trong trường hợp này, gói datetime có thể thực hiện công việc. Tất cả những gì chúng ta cần làm là lấy ngày hôm nay và sau đó đặt ngày thành 1

from datetime import datetime, date #import packages, and functions
first_day = datetime.today[].replace[day=1]
print[first day]

đầu ra

2022-05-01 09:11:00.894081

Nếu bạn chỉ quan tâm đến ngày chứ không phải thời gian, bạn có thể gọi date. today[] ở dòng hai, sau đó đặt giá trị ngày thành 1

cú pháp

Chúng tôi có thể nhận được ngày cuối cùng của tháng bằng cách sử dụng gói có sẵn có tên là lịch trong Python. Chính xác, chúng ta sẽ sử dụng hàm monthrange[]. Hàm này lấy năm và tháng và trả về một bộ gồm hai giá trị – ngày trong tuần của ngày đầu tiên của tháng đã cho và số ngày trong tháng. Các ngày trong tuần là số nguyên được mã hóa từ 0 là Thứ Hai đến 6 là Chủ nhật

cú pháp

import calendar
a = calendar.monthrange[2024, 2] # February of a leap year
b = calendar.monthrange[2022, 5] # May of 2022
print[a]
print[b]

đầu ra

[3, 29]
[6, 31]

Từ ví dụ này, chúng ta có thể lưu ý rằng tháng 2 năm 2024 có 29 ngày [theo dự kiến, là năm nhuận] và ngày đầu tiên của tháng là ngày 3 [thứ Năm]

Sau đó chúng ta có thể sử dụng lịch. hàm monthrange[] để lấy ngày cuối cùng của tháng như sau

from datetime import date, timedelta
import calendar
year, month = date.today[].year, date.today[].month #current year and month
#date.today[] = 2022-05-17
last_day_of_prev_month = date.today[].replace[day=calendar.monthrange[year, month][1]] - timedelta[days=1]
print[last_day_of_prev_month]

đầu ra

2022-05-30

Lưu ý rằng chúng ta vừa mượn những ý tưởng đã biết từ cách chúng ta có ngày đầu tiên của tháng và sử dụng lịch. hàm monthrange[] để chọn số ngày trong tháng cho ngày cuối cùng của tháng

Lấy ngày cuối cùng của tháng trước

Vì chúng ta đã biết cách lấy ngày đầu tiên của tháng, nên chúng ta có thể sử dụng hàm timedelta[] để trừ đi một ngày từ ngày đó

from datetime import datetime, date, timedelta
last_day_of_prev_month = date.today[].replace[day=1] - timedelta[days=1]
print[last_day_of_prev_month]

đầu ra

2022-04-30

Lấy ngày trong tuần cho một ngày nhất định

Hãy để chúng tôi thảo luận về hai cách tiếp cận ở đây

Cách tiếp cận #1 Ngày sử dụng. strftime[định dạng]

Hàm strftime[] trả về một chuỗi đại diện của ngày đã cho. Một chuỗi định dạng rõ ràng kiểm soát nó. Để lấy ngày trong tuần, chúng ta sẽ sử dụng chỉ thị %A như sau [Để có danh sách đầy đủ các chỉ thị định dạng, bạn có thể đọc tài liệu của strftime]

________số 8

đầu ra

Tuesday
Sunday

Hôm nay là Thứ Ba, dựa trên dòng đầu tiên và ngày 11 tháng 11 năm 2021 là Chủ nhật

Cách tiếp cận #2 Ngày sử dụng. ngày trong tuần[]

Hàm này trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 0 và Chủ Nhật là 6. Chúng ta có thể tiến hành chuyển đổi số nguyên thành tên đầy đủ cho phù hợp nếu chúng ta chọn. Chúng tôi có thể sử dụng từ điển để thực hiện chuyển đổi này hoặc lịch. day_name[]

2022-05-01 09:11:00.894081
0

Hoặc,

2022-05-01 09:11:00.894081
1

đầu ra

2022-05-01 09:11:00.894081
2

Ngày thông minh

Phần này sẽ thảo luận về việc phân tích cú pháp các ngày đã bản địa hóa được tìm thấy trong các định dạng chuỗi có thể không phù hợp với định dạng chuỗi theo yêu cầu của datetime. strftime[], mà chúng ta đã thảo luận trong phần trước

Chúng tôi sẽ phân tích các ngày tương đối như “ngày mai”, “20 ngày nữa”, “2 năm 2 tuần trước”, “hôm qua”, v.v. Bây giờ chúng ta hãy thảo luận về hai gói mà chúng ta có thể sử dụng để phân tích các ngày tương đối

Trường hợp đã qua sử dụng. Phân tích cú pháp ngày tương đối là rất quan trọng khi xử lý ngày đã được ghi ở các định dạng khác nhau

Phân tích ngày tương đối bằng thư viện dateparser

Hàm parse[] trong dateparser có thể phân tích ngày tương đối bằng cách tính các tính năng như múi giờ, ngôn ngữ, ngày tra cứu trong chuỗi dài và thậm chí hỗ trợ các hệ thống lịch khác nhau. Cú pháp chung cho trình phân tích cú pháp là

cú pháp

< trình phân tích dữ liệu. parse[date_string, date_formats=None, languages=None, locales=None, region=None, settings=None, detect_languages_function=None]>

Thí dụ

2022-05-01 09:11:00.894081
3

Phân tích ngày tháng với gói dateutil

Giống như dateparser. parser[], hàm parse[] trong dateutil được sử dụng để phân tích ngày tháng nhằm loại bỏ sự mơ hồ trong định dạng ngày tháng trong tập dữ liệu. Dưới đây là một số ví dụ về những gì dateutil có thể làm

2022-05-01 09:11:00.894081
4

Đó chỉ là phần giới thiệu về những gì gói đẹp này có thể làm. Bạn có thể đọc thêm về các cách sử dụng khác nhau của dateutil trong tài liệu

Chủ Đề