Trăn có được thứ sáu tới

Mô-đun lịch trong Python có lớp lịch cho phép tính toán cho các tác vụ khác nhau dựa trên ngày, tháng và năm. Ngoài ra, lớp TextCalendar và HTMLCalendar trong Python cho phép bạn chỉnh sửa lịch và sử dụng theo yêu cầu của bạn

Hãy xem chúng ta có thể làm gì với Lịch Python

Bước 1) Chạy mã

Trăn có được thứ sáu tới

  • Dòng mã số 1. Chúng tôi bắt đầu với “lịch nhập khẩu” sẽ nhập tất cả các lớp của mô-đun này
  • Dòng mã số 3. c= lịch. TextCalendar(lịch. SUNDAY) yêu cầu trình thông dịch tạo lịch văn bản. Đầu tháng sẽ là chủ nhật. Trong Python, bạn có thể định dạng lịch vì bạn có thể thay đổi ngày trong tháng để bắt đầu bằng
  • Dòng mã số 4. str= c. formatmonth(2025,1) Chúng tôi đang tạo lịch cho năm 2025, Tháng 1 – Tháng 1
  • Dòng mã số 5. print str sẽ in đầu ra

Hãy thay đổi nhanh giá trị từ Chủ nhật sang Thứ năm và kiểm tra đầu ra

Trăn có được thứ sáu tới

Bước 2) Bạn cũng có thể in Lịch ở định dạng HTML, tính năng này rất hữu ích cho nhà phát triển nếu họ muốn thực hiện bất kỳ thay đổi nào về giao diện của lịch

Trăn có được thứ sáu tới

Bước 3) Lặp lại các ngày trong tháng bằng cách sử dụng c. itermonthday (2025,4), nó sẽ lấy tổng số ngày của tháng đó

Trăn có được thứ sáu tới

  • Khi bạn thực thi mã để lấy tổng số ngày cho một tháng cụ thể, chẳng hạn như “tháng 4”, thì bạn sẽ nhận được 30 ngày ở đầu ra nhưng bạn cũng sẽ thấy một số số 0 cùng với những ngày này ở đầu và đôi khi ở cuối tháng.
  • Số không trong đầu ra có nghĩa là ngày trong tuần nằm trong một tháng trùng lặp, có nghĩa là nó không thuộc về tháng đó
  • Các số 0 này xuất hiện trong đầu ra bởi vì trong mã của bạn, bạn đã đề cập đến ngày (Thứ Năm), vì vậy khi bạn gọi hàm “c. itermonthdays”, nó sẽ bắt đầu đếm ngày từ Thứ Năm và Thứ Năm của bạn có thể không bắt đầu bằng ngày 1 tháng 4 mà có thể là ngày 28 hoặc 29 tháng 3, vì vậy khi bạn thực thi mã, nó sẽ bắt đầu đếm ngày từ ngày 28 tháng 3 và bất kỳ ngày nào sau đó . Những ngày này sẽ được tính là 0 và trong đầu ra, bạn sẽ thấy những số 0 này và áp dụng tương tự cho cuối tháng
  • Vì vậy, ngoại trừ ngày 1-30, tất cả các ngày từ tháng trước cũng như tháng sau sẽ xuất hiện ở đầu ra dưới dạng số không

Bước 4) Bạn có thể tìm nạp dữ liệu từ hệ thống cục bộ, như tháng hoặc ngày trong tuần, v.v.

Trăn có được thứ sáu tới

  • Đầu ra ở đây cho thấy rằng chúng tôi đã in tên tháng từ hệ thống cục bộ. Tương tự như vậy, bạn cũng có thể tìm nạp tên ngày trong tuần như hình bên dưới
  • Đầu ra sẽ phụ thuộc vào hệ thống cục bộ, giả sử nếu hệ thống cục bộ của bạn là một số quốc gia khác thì nó sẽ cung cấp đầu ra theo cài đặt cục bộ của quốc gia đó. Ở đây chúng ta có tháng nên sẽ không khác biệt nhưng nếu là tuần hoặc ngày thì chắc chắn sẽ khác

Trăn có được thứ sáu tới

Bước 5) Bạn có thể lấy danh sách ngày cụ thể trong cả năm. Ví dụ: có một ngày kiểm toán vào mỗi thứ Hai đầu tiên của tuần. Bạn muốn biết ngày thứ Hai đầu tiên của mỗi tháng. Bạn có thể sử dụng mã này

Bắt đầu từ NumPy 1. 7, có các kiểu dữ liệu mảng lõi vốn hỗ trợ chức năng ngày giờ. Kiểu dữ liệu được gọi, được đặt tên như vậy vì đã được thư viện chuẩn Python lấy

Datetime64 Quy ước và Giả định

Tương tự như lớp Python, ngày được thể hiện trong Lịch Gregorian hiện tại, được mở rộng vô thời hạn cả trong tương lai và trong quá khứ. Trái ngược với Python , chỉ hỗ trợ các năm trong phạm vi 1 AD — 9999 AD, cũng cho phép các ngày trước Công nguyên; . e. năm 2 TCN được đánh số −1, năm 1 TCN được đánh số 0, năm 1 AD được đánh số 1

Thời gian tức thời, giả sử 16. 23. 32. 234, được biểu thị đếm giờ, phút, giây và phân số từ nửa đêm. tôi. e. 00. 00. 00. 000 là nửa đêm, 12. 00. 00. 000 là buổi trưa, v.v. Mỗi ngày dương lịch có đúng 86400 giây. Đây là thời gian “ngây thơ”, không có khái niệm rõ ràng về múi giờ hoặc thang thời gian cụ thể (UT1, UTC, TAI, v.v. ).

[]

Lịch thu được bằng cách mở rộng lịch Gregorian trước khi chính thức được thông qua vào tháng 10. Ngày 15 tháng 1 năm 1582 được gọi là Lịch Gregorian Proleptic

[]

Giả định 86400 giây mỗi ngày theo lịch không hợp lệ đối với UTC, thang thời gian dân sự ngày nay. Trên thực tế, do sự hiện diện của giây nhuận trong những dịp hiếm hoi, một ngày có thể dài 86401 hoặc 86399 giây. Ngược lại, giả định ngày 86400 đúng với thang thời gian TAI. Hỗ trợ rõ ràng cho chuyển đổi TAI và TAI sang UTC, tính theo giây nhuận, đã được đề xuất nhưng chưa được triển khai. Xem thêm phần bên dưới

Ngày giờ cơ bản

Cách cơ bản nhất để tạo thời gian biểu là từ các chuỗi ở định dạng ngày tháng hoặc ngày giờ theo tiêu chuẩn ISO 8601. Cũng có thể tạo thời gian dữ liệu từ một số nguyên bằng cách bù tương ứng với Unix epoch (00. 00. 00 UTC ngày 1 tháng 1 năm 1970). Đơn vị lưu trữ nội bộ được chọn tự động từ dạng chuỗi và có thể là một hoặc một. Đơn vị ngày là năm ('Y'), tháng ('M'), tuần ('W') và ngày ('D'), trong khi đơn vị thời gian là giờ ('h'), phút ('m' . Kiểu dữ liệu cũng chấp nhận chuỗi “NAT”, trong bất kỳ tổ hợp chữ thường/chữ hoa nào, cho giá trị “Không phải là thời gian”

Thí dụ

Ngày ISO đơn giản

>>> np.datetime64('2005-02-25')
numpy.datetime64('2005-02-25')

Từ một số nguyên và một đơn vị ngày, 1 năm kể từ kỷ nguyên UNIX

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')

Sử dụng tháng cho đơn vị

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')

Chỉ xác định tháng, nhưng buộc đơn vị 'ngày'

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')

Từ một ngày và thời gian

>>> np.datetime64('2005-02-25T03:30')
numpy.datetime64('2005-02-25T03:30')

NAT (không phải là thời gian)

>>> np.datetime64('nat')
numpy.datetime64('NaT')

Khi tạo một mảng ngày giờ từ một chuỗi, vẫn có thể tự động chọn đơn vị từ các đầu vào, bằng cách sử dụng loại ngày giờ với các đơn vị chung

Thí dụ

>>> np.array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64')
array(['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64[D]')

>>> np.array(['2001-01-01T12:00', '2002-02-03T13:56:03.172'], dtype='datetime64')
array(['2001-01-01T12:00:00.000', '2002-02-03T13:56:03.172'],
      dtype='datetime64[ms]')

Một mảng thời gian có thể được tạo từ các số nguyên biểu thị dấu thời gian POSIX với đơn vị đã cho

Thí dụ

________số 8

>>> np.array([0, 1577836800000]).astype('datetime64[ms]')
array(['1970-01-01T00:00:00.000', '2020-01-01T00:00:00.000'],
      dtype='datetime64[ms]')

Loại datetime hoạt động với nhiều hàm NumPy phổ biến, ví dụ có thể được sử dụng để tạo phạm vi ngày

Thí dụ

Tất cả các ngày trong một tháng

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
0

Đối tượng datetime đại diện cho một thời điểm duy nhất. Nếu hai ngày giờ có các đơn vị khác nhau, chúng vẫn có thể biểu thị cùng một thời điểm và việc chuyển đổi từ đơn vị lớn hơn như tháng sang đơn vị nhỏ hơn như ngày được coi là 'an toàn' vì thời điểm vẫn được biểu thị chính xác

Thí dụ

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
1

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
2

Không dùng nữa kể từ phiên bản 1. 11. 0. NumPy không lưu trữ thông tin múi giờ. Để tương thích ngược, datetime64 vẫn phân tích cú pháp chênh lệch múi giờ mà nó xử lý bằng cách chuyển đổi thành UTC±00. 00 (giờ Zulu). Hành vi này không được dùng nữa và sẽ phát sinh lỗi trong tương lai.

Datetime và Timedelta Số học

NumPy cho phép phép trừ hai giá trị ngày giờ, một thao tác tạo ra một số có đơn vị thời gian. Vì NumPy không có hệ thống đại lượng vật lý trong cốt lõi của nó nên kiểu dữ liệu được tạo ra để bổ sung cho. Các đối số cho là một số, để biểu thị số lượng đơn vị và đơn vị ngày/giờ, chẳng hạn như (D)ay, (M)onth, (Y)ear, (h)ours, (m)inutes hoặc ( . Kiểu dữ liệu cũng chấp nhận chuỗi “NAT” thay cho số cho giá trị “Không phải lúc”

Thí dụ

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
3

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
4

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
5

Datetimes và Timedeltas phối hợp với nhau để cung cấp các cách tính toán datetime đơn giản

Thí dụ

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
6

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
7

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
8

>>> np.datetime64(1, 'Y')
numpy.datetime64('1971')
9

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
0

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
1

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
2

Có hai đơn vị Timedelta ('Y', năm và 'M', tháng) được xử lý đặc biệt vì chúng thay đổi bao nhiêu thời gian tùy thuộc vào thời điểm chúng được sử dụng. Trong khi một đơn vị ngày timedelta tương đương với 24 giờ, không có cách nào để chuyển đổi đơn vị tháng thành ngày, vì các tháng khác nhau có số ngày khác nhau

Thí dụ

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
3

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
4

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
5

Đơn vị ngày giờ

Các kiểu dữ liệu Datetime và Timedelta hỗ trợ một số lượng lớn đơn vị thời gian, cũng như các đơn vị chung có thể được ép buộc vào bất kỳ đơn vị nào khác dựa trên dữ liệu đầu vào

Ngày giờ luôn được lưu trữ với kỷ nguyên 1970-01-01T00. 00. Điều này có nghĩa là các ngày được hỗ trợ luôn là một khoảng đối xứng xung quanh kỷ nguyên, được gọi là "khoảng thời gian" trong bảng bên dưới

Độ dài của khoảng là phạm vi của số nguyên 64 bit nhân với độ dài của ngày hoặc đơn vị. Ví dụ: khoảng thời gian cho 'W' (tuần) dài hơn đúng 7 lần so với khoảng thời gian cho 'D' (ngày) và khoảng thời gian cho 'D' (ngày) dài hơn đúng 24 lần so với khoảng thời gian

Đây là đơn vị ngày

Mã số

Nghĩa

Khoảng thời gian (tương đối)

Khoảng thời gian (tuyệt đối)

Y

năm

+/- 9. 2e18 tuổi

[9. 2e18 TCN, 9. 2e18 sau Công Nguyên]

M

tháng

+/- 7. 6e17 tuổi

[7. 6e17 TCN, 7. 6e17 SCN]

W

tuần

+/- 1. 7e17 tuổi

[1. 7e17 TCN, 1. 7e17 SCN]

D

ngày

+/- 2. 5e16 tuổi

[2. 5e16 TCN, 2. 5e16 SCN]

Và đây là đơn vị thời gian

Mã số

Nghĩa

Khoảng thời gian (tương đối)

Khoảng thời gian (tuyệt đối)

h

giờ

+/- 1. 0e15 tuổi

[1. 0e15 TCN, 1. 0e15 SCN]

m

phút

+/- 1. 7e13 tuổi

[1. 7e13 TCN, 1. 7e13 SCN]

s

thứ hai

+/- 2. 9e11 tuổi

[2. 9e11 TCN, 2. 9e11 SCN]

bệnh đa xơ cứng

một phần nghìn giây

+/- 2. 9e8 tuổi

[ 2. 9e8 TCN, 2. 9e8 sau Công Nguyên]

chúng tôi / μs

phần triệu giây

+/- 2. 9e5 năm

[290301 TCN, 294241 SCN]

ns

nano giây

+/- 292 năm

[ 1678 SCN, 2262 SCN]

ps

pico giây

+/- 106 ngày

[ 1969 SCN, 1970 SCN]

fs

femto giây

+/- 2. 6 tiếng

[ 1969 SCN, 1970 SCN]

như

atto giây

+/- 9. 2 giây

[ 1969 SCN, 1970 SCN]

Chức năng ngày làm việc

Để cho phép sử dụng ngày giờ trong ngữ cảnh chỉ một số ngày nhất định trong tuần là hợp lệ, NumPy bao gồm một tập hợp các hàm “busday” (ngày làm việc)

Mặc định cho các chức năng ngày bận rộn là các ngày hợp lệ duy nhất là từ Thứ Hai đến Thứ Sáu (ngày làm việc thông thường). Việc triển khai dựa trên một “mặt nạ tuần” chứa 7 cờ Boolean để biểu thị các ngày hợp lệ;

Các chức năng “busday” có thể kiểm tra thêm danh sách các ngày “nghỉ lễ”, các ngày cụ thể không phải là ngày hợp lệ

Hàm này cho phép bạn áp dụng các giá trị bù trừ được chỉ định trong ngày làm việc cho thời gian biểu với đơn vị là 'D' (ngày)

Thí dụ

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
6

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
7

Khi ngày nhập vào rơi vào ngày cuối tuần hoặc ngày lễ, trước tiên hãy áp dụng quy tắc để chuyển ngày thành ngày làm việc hợp lệ, sau đó áp dụng giá trị bù. Quy tắc mặc định là 'nâng cao', quy tắc này chỉ đơn giản là tăng một ngoại lệ. Các quy tắc thường được sử dụng nhất là 'chuyển tiếp' và 'lùi'

Thí dụ

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
8

>>> np.datetime64('2005-02')
numpy.datetime64('2005-02')
9

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
0

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
1

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
2

Trong một số trường hợp, việc sử dụng hợp lý cuộn và phần bù là cần thiết để có được câu trả lời mong muốn

Thí dụ

Ngày làm việc đầu tiên vào hoặc sau một ngày

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
3

Ngày làm việc đầu tiên hoàn toàn sau một ngày

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
4

Hàm này cũng hữu ích để tính toán một số loại ngày như ngày lễ. Ở Canada và U. S. , Ngày của mẹ là vào Chủ nhật thứ hai của tháng Năm, có thể được tính bằng mặt nạ tuần tùy chỉnh

Thí dụ

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
5

Khi hiệu suất là quan trọng để thao tác nhiều ngày làm việc với một lựa chọn cụ thể về mặt nạ trong tuần và ngày lễ, sẽ có một đối tượng lưu trữ dữ liệu cần thiết ở dạng được tối ưu hóa

np. is_busday()

Để kiểm tra một giá trị xem đó có phải là một ngày hợp lệ hay không, hãy sử dụng

Thí dụ

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
6

np. busday_count()

Để tìm xem có bao nhiêu ngày hợp lệ trong một phạm vi datetime64 đã chỉ định, hãy sử dụng

Thí dụ

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
7

Nếu bạn có một mảng các giá trị datetime64 ngày và bạn muốn đếm xem có bao nhiêu trong số đó là ngày hợp lệ, bạn có thể thực hiện việc này

Thí dụ

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
8

Mặt nạ tuần tùy chỉnh

Dưới đây là một số ví dụ về giá trị mặt nạ tuần tùy chỉnh. Những ví dụ này chỉ định mặc định “busday” của Thứ Hai đến Thứ Sáu là những ngày hợp lệ

Vài ví dụ

>>> np.datetime64('2005-02', 'D')
numpy.datetime64('2005-02-01')
9

Datetime64 thiếu sót

Giả định rằng tất cả các ngày dài chính xác là 86400 giây làm cho phần lớn tương thích với Python và ngữ nghĩa “thời gian POSIX”; . Một bản tóm tắt ngắn gọn không đầy đủ được đưa ra dưới đây

  • Không thể phân tích các dấu thời gian UTC hợp lệ xảy ra trong một giây nhuận dương

    Thí dụ

    “2016-12-31 23. 59. 60 UTC” là một giây nhuận, do đó “2016-12-31 23. 59. 60. 450 UTC” là dấu thời gian hợp lệ không thể phân tích cú pháp bằng

    >>> np.datetime64('2005-02-25T03:30')
    numpy.datetime64('2005-02-25T03:30')
    
    0

  • Tính toán Timedelta64 giữa hai ngày UTC có thể bị sai bởi một số nguyên SI giây

    Thí dụ

    Tính số giây SI giữa “2021-01-01 12. 56. 23. 423 UTC” và “2001-01-01 00. 00. 00. 000 UTC”

    >>> np.datetime64('2005-02-25T03:30')
    numpy.datetime64('2005-02-25T03:30')
    
    1

    tuy nhiên câu trả lời đúng là 631198588. 423 SI giây vì có 5 giây nhuận trong khoảng thời gian từ 2001 đến 2021

  • Tính toán Timedelta64 cho các ngày trong quá khứ không trả về SI giây, như người ta mong đợi

    Thí dụ

    Tính số giây giữa “000-01-01 UT” và “1600-01-01 UT”, trong đó UT là giờ quốc tế

    >>> np.datetime64('2005-02-25T03:30')
    numpy.datetime64('2005-02-25T03:30')
    
    2

    Kết quả tính toán, 50491123200 giây, thu được bằng số ngày đã trôi qua (584388) nhân 86400 giây; . Giá trị chính xác tính bằng SI giây chỉ có thể được ước tính, e. g sử dụng dữ liệu được xuất bản trong Đo vòng quay của Trái đất. 720 trước Công nguyên đến sau Công nguyên 2015, 2016, Kỷ yếu của Hiệp hội Hoàng gia A 472, của Stephenson et. tất cả. Ước tính hợp lý là 50491112870 ± 90 giây, với chênh lệch là 10330 giây