Viết chương trình python tính toán số ngày dựa trên ngày tháng năm không được dụng thư viện datetime

This entry is part 21 of 29 in the series Python Không Khó

88/ 100

Python cung cấp một số thư viện để làm việc với thời gian. Trong bài viết hôm nay Lập trình không khó xin giới thiệu cho các bạn thư viện datetime trong python để làm việc với thời gian.

Thư viện datetime trong Python được phân loại thành 5 lớp chính.

  • date - Thao tác chỉ ngày (Tháng, ngày, năm)
  • time - Thời gian độc lập trong ngày (Giờ, phút, giây, micro giây)
  • datetime - Kết hợp thời gian và ngày (Tháng, ngày, năm, giờ, giây, micro giây)
  • timedelta Wiki Một khoảng thời gian được sử dụng để thao túng ngày

  • Date & DateTime trong python
  • Lấy ngày bằng today
    • Cách lấy xem hôm nay là thứ mấy trong tuần
    • Ví dụ nhỏ:
  • Ngày và giờ hiện tại trong Python
  • Cách định dạng đầu ra ngày và thời gian với Strftime ()
    • Một số định dạng thường dùng
  • Cách sử dụng Timedelta
  • Tóm lược
    • Sử dụng các đối tượng datetime
    • Định dạng hết thời gian với “hàm thời gian str”
    • Đối tượng Timedelta

Việc đầu tiên cần làm là import thư viện datetime trong python:

from datetime import datetime

from datetime import time

from datetime import date

Lấy ngày bằng today

Chức năngdate.today có một số thuộc tính liên quan đến nó. Chúng ta có thể in ngày / tháng / năm và nhiều thứ khác.

Lấy ngày tháng năm hiện tại:

from datetime import date

print("hôm nay là ngày: ",date.today())

#return hôm nay là ngày:  2019-12-25

Chỉ cần hai dòng lệnh chúng ta đã có thể lấy được ngày tháng hiện tại.

Bạn cũng có thể lấy riêng ra ngày, hoặc tháng, hoặc năm như ở trong ví dụ dưới:

from datetime import date

today=date.today()

Day=today.day

Month=today.month

Year= today.year

print("hôm nay là ngày: ",Day,Month,Year)

kết quả:

hôm nay là ngày: 25 12 2019

Cách lấy xem hôm nay là thứ mấy trong tuần

Thư viện datetime trong python cung cấp cho ta hàm date.today() để lấy số ngày trong tuần. Dưới đây là Bảng ngày bắt đầu với Thứ Hai là 0 và Chủ Nhật là 6

ngàySố tuần
Thứ hai 0
Thứ ba 1
Thứ tư 2
Thứ năm 3
Thứ sáu 4
ngày thứ bảy 5
chủ nhật 6

Thứ trong tuần rất hữu ích cho các mảng có chỉ số phụ thuộc vào Ngày trong tuần.

#ví dụ về datetime trong python

from datetime import date

today=date.today()

print("hôm nay là ngày thứ",today.weekday(),"trong tuần")

Tại thời điểm bài viết là thứ 4 ngày 25/12/2019 nên kết quả là:

hôm nay là ngày thứ 2 trong tuần

Ví dụ nhỏ:

in ra xem hôm nay là thứ mấy trong tuần

#import các thư viện

from datetime import datetime

from datetime import date

today=datetime.today()

#lấy số ngày trong tuần

wd= date.weekday(today)

#tạo danh sách tên các thứ trong tuần

days=['Monday','Tuesday','Wednesday','Thursday','Friday', 'Saturday','Sunday']

#in ra kết quả

print('Today is day number',wd)

print('which is a',days[wd])

Kết quả:

Today is day number 2

which is a Wednesday

Ngày và giờ hiện tại trong Python

Giống như  date, chúng ta cũng có thể sử dụng thư viện datetime trong Python. Nó đưa ra ngày cùng với thời gian tính bằng giờ, phút, giây và mili giây.

Sử dụng date.nowchúng ta có thể lấy được thời gian và ngày hiện tại:

from datetime import datetime

today=datetime.now()

print("ngày và giờ hiện tại:",today)

kết quả:

ngày và giờ hiện tại: 2019-12-25 19:15:29.242001

Như kết quả, bạn có thể thấy là thời gian được tính đến mili giây.

Và nếu bạn chỉ muốn in ra giờ, phút, giây bạn có thể làm như trong ví dụ ở dưới:

from datetime import datetime

today=datetime.now()

#lấy ra ngày giờ hiện tại

second=today.second

minute=today.minute

hour   =today.hour

print("giờ hiện tại:",hour,minute,second)

kết quả:

Cách định dạng đầu ra ngày và thời gian với Strftime ()

Đến bây giờ chúng ta đã học, cách sử dụng đối tượng date và datetime trong Python. Chúng tôi sẽ tiến thêm một bước nữa và tìm hiểu cách sử dụng chức năng định dạng để định dạng ngày và giờ

Bước 1: Đầu tiên chúng ta sẽ thấy một bước đơn giản về cách định dạng năm. Hãy nhìn vào ví dụ:

#ví dụ về datetime trong python

from datetime import datetime

# from datetime import time

from datetime import date

today=datetime.now()

print(today.strftime('%Y'))

#return 2019

  • Chúng tôi đã sử dụng  hàm strftime để định dạng.
  • Hàm này sử dụng mã điều khiển khác nhau để đưa ra đầu ra.
  • Mỗi mã kiểm soát giống với các tham số khác nhau như năm, tháng, ngày trong tuần và ngày [(% y /% Y - Năm), (% a /% A- ngày trong tuần), (% b /% B- tháng), (% d - ngày của tháng)].
  • Trong trường hợp của chúng tôi, đó là (% Y) giống với năm, nó in ra năm (ví dụ: 2019).

Bây giờ nếu bạn thay thế (% Y) bằng chữ thường, nghĩa là (% y) và thực thi mã, đầu ra sẽ chỉ hiển thị (19) chứ không phải (2019).

Viết chương trình python tính toán số ngày dựa trên ngày tháng năm không được dụng thư viện datetime

Hàm strftime có thể khai báo riêng ngày, ngày, tháng và năm. Ngoài ra với những thay đổi nhỏ trong mã điều khiển trong strftime bạn có thể định dạng kiểu văn bản.

Viết chương trình python tính toán số ngày dựa trên ngày tháng năm không được dụng thư viện datetime

Bên trong hàm strftime nếu bạn thay thế (% a) bằng chữ A, nghĩa là, (% A), đầu ra sẽ in ra là Wednesday thay vì chỉ viết tắt Wed.

Viết chương trình python tính toán số ngày dựa trên ngày tháng năm không được dụng thư viện datetime

Với sự trợ giúp của chức năng Strftime, chúng ta cũng có thể truy xuất thời gian hệ thống cục bộ, ngày hoặc cả hai.

  1. % C- cho biết ngày, giờ, tuần,…
  2. % x- cho biết ngày
  3. % X- cho biết giờ

from datetime import datetime

today=datetime.now()

print(today.strftime('%c'))

print(today.strftime('%x'))

print(today.strftime('%X'))

kết quả:

Wed Dec2519:52:062019

12/25/19

19:52:06

Hàm strftime cho phép bạn gọi thời gian ở bất kỳ định dạng nào trong 24 giờ hoặc 12 giờ.

from datetime import datetime

today=datetime.now()

print(today.strftime('%I:%M:%S %p'))

Chỉ bằng cách xác định mã kiểm soát như % I / H cho giờ,% M cho phút,% S cho giây, người ta có thể gọi thời gian cho các định dạng khác nhau

Thời gian 12 giờ được khai báo [print(now.strftime (% I:% M:% S% P))]

Thời gian 24 giờ được khai báo [print(now.strftime (% H:% M))]

Một số định dạng thường dùng

  • %A: Hiển thị tên đầy đủ của các thứ trong tuần (Monday, Tuesday,…).
  • %a: Hiển thị tên viết tắt của các thứ trong tuần (Mon, Tue,…).
  • %B: Hiển thị tên đầy đủ của các tháng.
  • %b: Hiển thị tên viết tắt của các tháng.
  • %d: Hiển thị ngày từ 1 đến 31.
  • %H: Hiển thị giờ loại 24h từ 00 đến 23.
  • %I: Hiện thị giờ loại 12h từ 01 đến 12.
  • %j: Hiển thị số ngày của năm từ 001 đến 366.
  • %m: Hiển thị tháng từ 01 đến 12.
  • %M: Hiển thị phút từ 00 đến 59.
  • %S: Hiển thị giây từ 00 đến 59.
  • %Y: Hiển thị đầy đủ năm.
  • %y: Hiển thị viết tắt của năm từ 00 đến 99 (Năm 2019 viết tắt thành 19).
  • % C- cho biết ngày, giờ, tuần,…
  • % x- cho biết ngày
  • % X- cho biết giờ

Cách sử dụng Timedelta

Với các timedelta, bạn có thể ước tính thời gian cho cả tương lai và quá khứ. Nói cách khác, đó là một khoảng thời gian để dự đoán bất kỳ ngày, ngày hoặc thời gian đặc biệt.

Hãy nhớ rằng chức năng này không phải để in ra thời gian hay ngày tháng, mà là một cái gì đó để TÍNH TOÁN về tương lai hoặc quá khứ . Hãy xem một ví dụ để hiểu hơn.

from datetime import datetime

from datetime import timedelta

print(str(datetime.now()+timedelta(days=365)))

Phía trên là một ví dụ để tính xem 365 ngày sau kể từ ngày 25/12/2019 sẽ là ngày bao nhiêu, và kết quả là:

2020-12-2420:00:36.935888

Và trong kết quả thì ngày 25/12/2019 + 365 ngày sẽ là ngày noel của năm sau.

Hãy xét thêm một ví dụ sau để hiểu hơn.

from datetime import datetime

from datetime import timedelta

#ngày hôm nay cộng với 365 ngày

print(str(datetime.now()+timedelta(days= 365)))

#tương tự như vậy chúng ta có thể cộng thêm cả giờ, giây, phút,...

print(str(datetime.now()+timedelta(days=365, hours=8,minutes=10,weeks=1)))

kết quả:

2020-12-2420:05:22.064076

2021-01-0104:15:22.064076

ở dòng thứ 2 sẽ là kết quả của việc + 365 ngày + 8 giờ + 10 phút +1 tuần. Tôi nghĩ là vậy

Tóm lược

Để thao tác ngày và giờ theo cả hai cách đơn giản và phức tạp, mô đun datetime cung cấp các lớp hoặc danh mục khác nhau như

  • date - Thao tác chỉ ngày (Tháng, ngày, năm)
  • time - Thời gian độc lập trong ngày (Giờ, phút, giây, micro giây)
  • datetime - Kết hợp thời gian và ngày (Tháng, ngày, năm, giờ, giây, micro giây)
  • timedelta Wiki Một khoảng thời gian được sử dụng để thao túng ngày

Sử dụng các đối tượng datetime

  • Nhập đối tượng datetime trước khi thực thi mã là bắt buộc
  • Sử dụng chức năng date.today để in ngày / tháng / năm riêng lẻ cũng như lập chỉ mục trong ngày
  • Sử dụng đối tượng date.time để nhận thời gian theo giờ, phút, giây và mili giây

Định dạng hết thời gian với “hàm thời gian str”

  • Sử dụng strftime để thay đổi định dạng của năm
  • In riêng ngày, ngày, tháng và năm,
  • Gọi thời gian cho bất kỳ định dạng 12 giờ hoặc 24 giờ

Đối tượng Timedelta

  • Với các đối tượng timedelta, bạn có thể ước tính thời gian cho cả tương lai và quá khứ
  • Tính tổng số ngày còn lại cho ngày đặc biệt (sinh nhật) kể từ thời điểm hiện tại
  • Tính tổng số ngày đã qua cho ngày đặc biệt (sinh nhật) kể từ thời điểm hiện tại

Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.

Hẹn các bạn vào các bài học sau!!!