Python 3 - Ngày và giờ

Một chương trình Python có thể xử lý ngày và giờ theo một số cách. Chuyển đổi giữa các định dạng ngày tháng là một công việc thường xuyên đối với máy tính. Các mô-đun lịch và thời gian của Python giúp theo dõi ngày và giờ.

Tick ​​là gì?

Khoảng thời gian là số dấu phẩy động tính bằng đơn vị giây. Thời gian cụ thể được biểu thị bằng giây kể từ 12:00 sáng, ngày 1 tháng 1 năm 1970 (kỷ nguyên).

Có một phổ biến timemô-đun có sẵn bằng Python cung cấp các hàm để làm việc với thời gian và chuyển đổi giữa các biểu diễn. Chức năngtime.time() trả về thời gian hệ thống hiện tại theo dấu tích kể từ 12:00 sáng, ngày 1 tháng 1 năm 1970 (kỷ nguyên).

Thí dụ

#!/usr/bin/python3
import time;      # This is required to include time module.

ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)

Điều này sẽ tạo ra một kết quả như sau:

Number of ticks since 12:00am, January 1, 1970: 1455508609.34375

Số học ngày tháng rất dễ thực hiện với tích tắc. Tuy nhiên, các ngày trước kỷ nguyên không thể được trình bày dưới dạng này. Ngày trong tương lai xa cũng không thể được thể hiện theo cách này - điểm giới hạn là vào năm 2038 đối với UNIX và Windows.

TimeTuple là gì?

Nhiều hàm thời gian của Python xử lý thời gian dưới dạng một bộ gồm 9 số, như được hiển thị bên dưới:

Mục lục Cánh đồng Giá trị
0 Năm 4 chữ số 2016
1 tháng 1 đến 12
2 ngày 1 đến 31
3 Giờ 0 đến 23
4 Phút 0 đến 59
5 Thứ hai 0 đến 61 (60 hoặc 61 là giây nhuận)
6 Ngày trong tuần 0 đến 6 (0 là Thứ Hai)
7 Ngày trong năm 1 đến 366 (ngày Julian)
số 8 Tiết kiệm ánh sáng ban ngày -1, 0, 1, -1 nghĩa là thư viện xác định DST

Ví dụ -

import time

print (time.localtime());

Điều này sẽ tạo ra một kết quả như sau:

time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9, 
   tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

Tuple trên tương đương với struct_timekết cấu. Cấu trúc này có các thuộc tính sau:

Mục lục Thuộc tính Giá trị
0 tm_year 2016
1 tm_mon 1 đến 12
2 tm_mday 1 đến 31
3 tm_hour 0 đến 23
4 tm_min 0 đến 59
5 tm_sec 0 đến 61 (60 hoặc 61 là giây nhuận)
6 tm_wday 0 đến 6 (0 là Thứ Hai)
7 tm_yday 1 đến 366 (ngày Julian)
số 8 tm_isdst -1, 0, 1, -1 nghĩa là thư viện xác định DST

Nhận thời gian hiện tại

Để dịch tức thì thời gian từ giây kể từ giá trị dấu phẩy động của kỷ nguyên thành bộ đếm thời gian, hãy chuyển giá trị dấu phẩy động cho một hàm (ví dụ: localtime) trả về bộ thời gian với tất cả chín mục hợp lệ.

#!/usr/bin/python3
import time

localtime = time.localtime(time.time())
print ("Local current time :", localtime)

Điều này sẽ tạo ra kết quả sau, có thể được định dạng ở bất kỳ hình thức nào khác có thể trình bày được:

Local current time : time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, 
   tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

Nhận định dạng thời gian

Bạn có thể định dạng bất kỳ lúc nào theo yêu cầu của mình, nhưng một phương pháp đơn giản để có thời gian ở định dạng có thể đọc được là asctime() -

#!/usr/bin/python3
import time

localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)

Điều này sẽ tạo ra kết quả sau:

Local current time : Mon Feb 15 09:34:03 2016

Nhận lịch trong một tháng

Mô-đun lịch cung cấp một loạt các phương pháp để chơi với lịch hàng năm và hàng tháng. Ở đây, chúng tôi in lịch cho một tháng nhất định (tháng 1 năm 2008) -

#!/usr/bin/python3
import calendar

cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)

Điều này sẽ tạo ra kết quả sau:

Here is the calendar:
   February 2016
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29

Mô-đun thời gian

Có một phổ biến timemô-đun có sẵn bằng Python, cung cấp các hàm để làm việc với thời gian và chuyển đổi giữa các biểu diễn. Đây là danh sách tất cả các phương pháp có sẵn.

Sr.No. Mô tả chức năng
1 time.altzone

Chênh lệch của múi giờ DST cục bộ, tính bằng giây về phía tây của UTC, nếu múi giờ được xác định. Điều này là âm nếu múi giờ DST địa phương nằm ở phía đông UTC (như ở Tây Âu, bao gồm cả Vương quốc Anh). Sử dụng điều này nếu ánh sáng ban ngày không phải là ánh sáng ban ngày.

2 time.asctime ([tupletime])

Chấp nhận bộ tuple thời gian và trả về một chuỗi 24 ký tự có thể đọc được, chẳng hạn như 'Thứ ba ngày 11 tháng 12 18:07:14 2008'.

3 đồng hồ thời gian( )

Trả về thời gian CPU hiện tại dưới dạng số giây dấu phẩy động. Để đo lường chi phí tính toán của các cách tiếp cận khác nhau, giá trị của time.clock hữu ích hơn so với time.time ().

4 time.ctime ([giây])

Giống như asctime (localtime (giây)) và không có đối số giống như asctime ()

5 time.gmtime ([giây])

Chấp nhận một thời điểm được biểu thị bằng giây kể từ kỷ nguyên và trả về bộ thời gian t với thời gian UTC. Lưu ý - t.tm_isdst luôn là 0

6 time.localtime ([giây])

Chấp nhận thời gian được biểu thị bằng giây kể từ kỷ nguyên và trả về bộ thời gian t với giờ địa phương (t.tm_isdst là 0 hoặc 1, tùy thuộc vào việc áp dụng DST cho giây tức thì theo quy tắc cục bộ).

7 time.mktime (tupletime)

Chấp nhận thời điểm được biểu thị dưới dạng bộ thời gian theo giờ địa phương và trả về giá trị dấu phẩy động với thời điểm được biểu thị bằng giây kể từ kỷ nguyên.

số 8 time.sleep (giây)

Tạm dừng chuỗi cuộc gọi trong giây giây.

9 time.strftime (fmt [, tupletime])

Chấp nhận một thời điểm được biểu thị dưới dạng bộ điều chỉnh thời gian theo giờ cục bộ và trả về một chuỗi biểu thị thời điểm đó như được chỉ định bởi chuỗi fmt.

10 time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')

Phân tích cú pháp str theo chuỗi định dạng fmt và trả về tức thì ở định dạng tuple thời gian.

11 time.time ()

Trả về thời gian hiện tại tức thì, một số giây dấu phẩy động kể từ kỷ nguyên.

12 time.tzset ()

Đặt lại các quy tắc chuyển đổi thời gian được sử dụng bởi các quy trình thư viện. Biến môi trường TZ chỉ định cách thực hiện điều này.

Có hai thuộc tính quan trọng có sẵn với mô-đun thời gian. Họ là -

Sr.No. Thuộc tính & Mô tả
1

time.timezone

Thuộc tính time.timezone là khoảng thời gian chênh lệch tính bằng giây của múi giờ địa phương (không có DST) từ UTC (> 0 ở Châu Mỹ; <= 0 ở hầu hết Châu Âu, Châu Á, Châu Phi).

2

time.tzname

Thuộc tính time.tzname là một cặp chuỗi phụ thuộc vào ngôn ngữ, là tên của múi giờ địa phương không có và có DST, tương ứng.

Mô-đun lịch

Mô-đun lịch cung cấp các chức năng liên quan đến lịch, bao gồm các chức năng in lịch văn bản cho một tháng hoặc năm nhất định.

Theo mặc định, lịch lấy Thứ Hai là ngày đầu tiên trong tuần và Chủ Nhật là ngày cuối cùng. Để thay đổi điều này, hãy gọicalendar.setfirstweekday() chức năng.

Đây là danh sách các chức năng có sẵn với calendar mô-đun -

Sr.No. Mô tả chức năng
1

calendar.calendar(year,w = 2,l = 1,c = 6)

Trả về một chuỗi nhiều dòng có lịch cho năm được định dạng thành ba cột cách nhau bởi c dấu cách. w là chiều rộng tính bằng ký tự của mỗi ngày; mỗi dòng có độ dài 21 * w + 18 + 2 * c. l là số dòng cho mỗi tuần.

2

calendar.firstweekday( )

Trả về cài đặt hiện tại cho ngày trong tuần bắt đầu mỗi tuần. Theo mặc định, khi lịch được nhập lần đầu tiên, giá trị này là 0, nghĩa là Thứ Hai.

3

calendar.isleap(year)

Trả về True nếu năm là năm nhuận; ngược lại, Sai.

4

calendar.leapdays(y1,y2)

Trả về tổng số ngày nhuận trong các năm trong phạm vi (y1, y2).

5

calendar.month(year,month,w = 2,l = 1)

Trả về một chuỗi nhiều dòng với lịch cho tháng tháng trong năm, một dòng mỗi tuần cộng với hai dòng tiêu đề. w là chiều rộng tính bằng ký tự của mỗi ngày; mỗi dòng có độ dài 7 * w + 6. l là số dòng cho mỗi tuần.

6

calendar.monthcalendar(year,month)

Trả về một danh sách các số nguyên. Mỗi danh sách phụ biểu thị một tuần. Các ngày bên ngoài tháng tháng trong năm được đặt thành 0; các ngày trong tháng được đặt thành ngày trong tháng, 1 trở lên.

7

calendar.monthrange(year,month)

Trả về hai số nguyên. Mã đầu tiên là mã của ngày trong tuần của ngày đầu tiên của tháng trong năm; cái thứ hai là số ngày trong tháng. Mã các ngày trong tuần là 0 (Thứ Hai) đến 6 (Chủ Nhật); số tháng là 1 đến 12.

số 8

calendar.prcal(year,w = 2,l = 1,c = 6)

Như in lịch.calendar (năm, w, l, c).

9

calendar.prmonth(year,month,w = 2,l = 1)

Giống như in lịch. Tháng (năm, tháng, tuần, l).

10

calendar.setfirstweekday(weekday)

Đặt ngày đầu tiên của mỗi tuần thành mã ngày trong tuần là ngày trong tuần. Mã các ngày trong tuần là 0 (Thứ Hai) đến 6 (Chủ Nhật).

11

calendar.timegm(tupletime)

Sự nghịch đảo của time.gmtime: chấp nhận một thời gian tức thì ở dạng bộ tuple thời gian và trả về cùng một thời điểm dưới dạng số giây dấu phẩy động kể từ kỷ nguyên.

12

calendar.weekday(year,month,day)

Trả về mã ngày trong tuần cho ngày đã cho. Mã các ngày trong tuần là 0 (Thứ Hai) đến 6 (Chủ Nhật); số tháng là 1 (tháng 1) đến 12 (tháng 12).

Các mô-đun và chức năng khác

Nếu bạn quan tâm, thì ở đây bạn sẽ tìm thấy danh sách các mô-đun và chức năng quan trọng khác để chơi với ngày và giờ trong Python -

  • Mô-đun ngày giờ
  • Mô-đun pytz
  • Mô-đun dateutil