Date & Time trong Python

Lấy Time hiện tại trong Python

Để lấy Time hiện tại, bạn sử dụng hàm tiền định nghĩa localtime(). Hàm localtime() này nhận một tham số là time.time(). Ở đây, time là module, time() là một hàm mà trả về system time hiện tại được biểu diễn dưới dạng số tick (số tích tắc) từ 12:00 am, 1/1/1970. Về cơ bản, tick là một số thực.

import time;

localtime = time.localtime(time.time())

print "Thoi gian hien tai la :", localtime

Kết quả là:

Thoi gian hien tai la : time.struct_time(tm_year=2015, tm_mon=11, tm_mday=29, tm_hour=19, tm_min=16, tm_sec=54, tm_wday=6, tm_yday=333, tm_isdst=0)

Dưới đây là phần giải thích:

Time được trả về là một cấu trúc gồm 9 thuộc tính. Như trong bảng sau:

Thuộc tính - Miêu tả

tm_year: Trả về năm hiện tại (ví dụ: 2015)

tm_mon: Trả về tháng hiện tại (1-12)

tm_mday: Trả về ngày hiện tại (1-31)

tm_hour: Trả về giờ hiện tại (0-23)

tm_min: Trả về phút hiện tại (0-59)

tm_sec: Trả về giây hiện tại (0-61 với 60 và 61 là các dây nhuận)

tm_wday: Trả về ngày trong tuần (0-6 với 0 là Monday)

tm_yday :Trả về ngày trong năm (1-366 kể cả năm nhuận)

tm_isdst: Trả về -1, 0 hoặc 1 tức là có xác định DST không

Lấy Time đã được định dạng trong Python

Bạn có thể định dạng bất kỳ time nào theo yêu cầu của bạn, nhưng phương thức đơn giản nhất là asctime(). Đây là một hàm đã được định nghĩa trong time module. Hàm này trả về một time đã được định dạng bao gồm ngày trong tuần, tháng, ngày trong tháng, thời gian và năm. Ví dụ:

import time;

 

localtime = time.asctime( time.localtime(time.time()) )

print "Thoi gian da duoc dinh dang la :", localtime

Kết quả là:

Thoi gian da duoc dinh dang la : Sun Nov 29 19:16:30 2015

time module trong Python

Có nhiều hàm được định nghĩa sẵn trong time Module mà bạn có thể được sử dụng để làm việc với time.

1. time.altzone

Trả về offset của DST timezone (số giây)

Cú pháp

Cú pháp của altzone() trong Python:

time.altzone

Trả về giá trị

Trả về offset của DST timezone (số giây).

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của altzone() trong Python.

import time

 

print "time.altzone %d " % time.altzone

Chạy chương trình Python trên sẽ cho kết quả:

time.altzone -28800

2. time.asctime([tupletime])

Chấp nhận một time-tuple và trả về một chuỗi gồm 24 ký tự có thể đọc được ví dụ như Mon Dec 11 18:07:14 2015

Cú pháp

Cú pháp của asctime() trong Python:

time.asctime([t]))

Chi tiết về tham số:

  • t -- Đây là tuple gồm 9 phần tử hoặc là một struct_time mà biểu diễn thời gian được trả về bởi hàm gmtime() hoặc localtime().

Trả về giá trị

Trả về một chuỗi gồm 24 ký tự có thể đọc được ví dụ như Mon Dec 11 18:07:14 2015.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của asctime() trong Python.

import time

 

t = time.localtime()

print "time.asctime(t): %s " % time.asctime(t)

Chạy chương trình Python trên sẽ cho kết quả:

time.asctime(t): Sun Nov 29 19:04:09 2015

3. time.clock()

Trả về CPU time hiện tại dưới dạng số giây dạng số thực

Cú pháp

Cú pháp của clock() trong Python:

time.clock()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về CPU time hiện tại dưới dạng số giây dạng số thực.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của clock() trong Python.

import time

 

def procedure():

    time.sleep(2.5)

 

# uoc luong thoi gian xu ly

t0 = time.clock()

procedure()

print time.clock() - t0, "giay thoi gian xu ly"

 

# uoc luong wall time

t0 = time.time()

procedure()

print time.time() - t0, "giay wall time"

Chạy chương trình Python trên sẽ cho kết quả:

2.49976329487 giay thoi gian xu ly

2.5 giay wall time

4. time.ctime([ secs ])

Giống asctime(localtime(secs)) và nếu không có tham số thì giống như asctime( )

Cú pháp

Cú pháp của ctime() trong Python:

time.ctime([ sec ])

Chi tiết về tham số:

  • sec -- Đây là số giây để được chuyển đổi thành biểu diễn chuỗi.

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của ctime() trong Python.

import time

 

print "time.ctime() : %s" % time.ctime()

Chạy chương trình Python trên sẽ cho kết quả:

time.ctime() : Sun Nov 29 19:06:39 2015

5. time.gmtime([ secs ])

Chuyển đổi một time được biểu diễn là số giây từ epoch sang một struct_time trong UTC

Cú pháp

Cú pháp của gmtime() trong Python:

time.gmtime([ sec ])

Chi tiết về tham số:

  • sec -- Đây là số giây để được chuyển đổi thành cấu trúc struct_time.

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của gmtime() trong Python.

import time

 

print "time.gmtime() : %s" % time.gmtime()

Chạy chương trình Python trên sẽ cho kết quả:

time.gmtime() : time.struct_time(tm_year=2015, tm_mon=11, tm_mday=29, tm_hour=12, tm_min=7, tm_sec=5, tm_wday=6, tm_yday=333, tm_isdst=0)

6. time.localtime([ secs ])

Tương tự như gmtime(), nhưng nó chuyển đổi số giây thành local time.

Cú pháp

Cú pháp của localtime() trong Python:

time.localtime([ sec ])

Chi tiết về tham số:

  • sec -- Đây là số giây để được chuyển đổi thành cấu trúc struct_time.

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của localtime() trong Python.

import time

 

print "time.localtime() : %s" % time.localtime()

Chạy chương trình Python trên sẽ cho kết quả:

time.localtime() : (2015, 2, 17, 17, 3, 38, 1, 48, 0)

7. time.mktime(tupletime)

Là ngược với hàm localtime(). Trả về một số thực để tương thích với time()

Cú pháp

Cú pháp của mktime() trong Python:

time.mktime(t)

Chi tiết về tham số:

  • t -- Đây là cấu trúc struct_time hoặc là một tuple gồm 9 phần tử.

Trả về giá trị

Trả về một số thực để tương thích với time().

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của mktime() trong Python.

import time

 

t = (2009, 2, 17, 17, 3, 38, 1, 48, 0)

secs = time.mktime( t )

print "time.mktime(t) : %f" %  secs

print "asctime(localtime(secs)): %s" % time.asctime(time.localtime(secs))

Chạy chương trình Python trên sẽ cho kết quả:

time.mktime(t) : 1234915418.000000

asctime(localtime(secs)): Tue Dec 17 17:03:38 2015

8. time.sleep(secs)

Dừng trình thực thi trong số giây đã cho là secs

Cú pháp

Cú pháp của sleep() trong Python:

time.sleep(t)

Chi tiết về tham số:

  • t -- Là thời gian (số giây) mà trình thực thi bị ngừng.

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của sleep() trong Python.

import time

 

print "Start : %s" % time.ctime()

time.sleep( 5 )

print "End : %s" % time.ctime()

Chạy chương trình Python trên sẽ cho kết quả:

Start : Sun Nov 29 19:09:04 2015

End : Sun Nov 29 19:09:09 2015

9. time.strftime(fmt[,tupletime])

Chuyển đổi một tuple hoặc struct_time thành một chuỗi được xác định bởi tham số format

Cú pháp

Cú pháp của strftime() trong Python:

time.strftime(format[, t])

Chi tiết về tham số:

  • t -- Là thời gian (số giây) để được định dạng.
  • format -- Là chuỗi trong các chỉ thị định dạng sau:

Chỉ thị

  • %a - Tên ngày trong tuần viết tắt
  • %A - Tên ngày trong tuần đầy đủ
  • %b - Tên tháng viết tắt
  • %B - Tên tháng đầy đủ
  • %c - Biểu diễn date và time ưu tiên
  • %C - Là century (Lấy năm chia cho 100, trong dãy từ 00 tới 99)
  • %d - Ngày trong tháng (01 to 31)
  • %D - Tương tự như %m/%d/%y
  • %e - Ngày của tháng (1 tới 31)
  • %g - Giống %G, nhưng không có century
  • %G - Năm ở dạng 4 chữ số (theo dõi %V).
  • %h - Tương tự %b
  • %H - Giờ, sử dụng 24h (từ 00 tới 23)
  • %I - Giờ, sử dụng 12h (01 tới 12)
  • %j - ngày của năm (001 tới 366)
  • %m - Tháng (01 tới 12)
  • %M - Phút
  • %n - Ký tự newline (dòng mới)
  • %p - Là am hoặc pm
  • %r - Là a.m. và p.m.
  • %R - Thời gian trong dạng 24h
  • %S - Giây
  • %t - Ký tự tab
  • %T - Thời gian hiện tại, tương đương %H:%M:%S
  • %u - Ngày trong tuần, là một số từ 1 tới 7, Monday=1. Chú ý: Trong Sun Solaris thì Sunday=1
  • %U - Số tuần của năm hiện tại, bắt đầu với Sunday đầu tiên như là ngày đầu tiên của tuần đầu tiên
  • %V - Số tuần của năm hiện tại theo chuẩn ISO 8601 (từ 01 tới 53)
  • %W - Số tuần của năm hiện tại, bắt đầu với Monday đầu tiên như là ngày đầu tiên của tuần đầu tiên
  • %w - Ngày của tuần dưới dạng số thập phân, Sunday=0
  • %x - Biểu diễn date ưu tiên, không có time
  • %X - Biểu diễn time ưu tiên, không có date
  • %y - Năm, không có century (dãy từ 00 tới 99)
  • %Y - Năm bao gồm cả century
  • %Z hoặc %z - Là timezone
  • %% - Hằng ký tự %

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của strftime() trong Python.

import time

 

t = (2015, 11, 17, 17, 3, 38, 1, 48, 0)

t = time.mktime(t)

print time.strftime("%b %d %Y %H:%M:%S", time.gmtime(t))

Chạy chương trình Python trên sẽ cho kết quả:

Nov 17 2015 10:03:38

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

Parse một chuỗi biểu diễn time theo một định dạng đã cho

Tham số format sử dụng các chỉ thị như trong hàm strftime(); mặc định là "%a %b %d %H:%M:%S %Y" mà kết nối với định dạng được trả về bởi ctime().

Nếu tham số string không thể phân tích được theo format, thì sẽ tạo ra một ngoại lệ là ValueError.

Cú pháp

Cú pháp của strptime() trong Python:

time.strptime(string[, format])

Chi tiết về tham số:

  • string -- Là thời gian trong định dạng chuỗi mà sẽ được phân tích dựa trên tham số format đã cung cấp.
  • format -- Là chỉ thị được sử dụng để phân tích chuỗi đã cho.

Chỉ thị

  • %a - Tên ngày trong tuần viết tắt
  • %A - Tên ngày trong tuần đầy đủ
  • %b - Tên tháng viết tắt
  • %B - Tên tháng đầy đủ
  • %c - Biểu diễn date và time ưu tiên
  • %C - Là century (Lấy năm chia cho 100, trong dãy từ 00 tới 99)
  • %d - Ngày trong tháng (01 to 31)
  • %D - Tương tự như %m/%d/%y
  • %e - Ngày của tháng (1 tới 31)
  • %g - Giống %G, nhưng không có century
  • %G - Năm ở dạng 4 chữ số (theo dõi %V).
  • %h - Tương tự %b
  • %H - Giờ, sử dụng 24h (từ 00 tới 23)
  • %I - Giờ, sử dụng 12h (01 tới 12)
  • %j - ngày của năm (001 tới 366)
  • %m - Tháng (01 tới 12)
  • %M - Phút
  • %n - Ký tự newline (dòng mới)
  • %p - Là am hoặc pm
  • %r - Là a.m. và p.m.
  • %R - Thời gian trong dạng 24h
  • %S - Giây
  • %t - Ký tự tab
  • %T - Thời gian hiện tại, tương đương %H:%M:%S
  • %u - Ngày trong tuần, là một số từ 1 tới 7, Monday=1. Chú ý: Trong Sun Solaris thì Sunday=1
  • %U - Số tuần của năm hiện tại, bắt đầu với Sunday đầu tiên như là ngày đầu tiên của tuần đầu tiên
  • %V - Số tuần của năm hiện tại theo chuẩn ISO 8601 (từ 01 tới 53)
  • %W - Số tuần của năm hiện tại, bắt đầu với Monday đầu tiên như là ngày đầu tiên của tuần đầu tiên
  • %w - Ngày của tuần dưới dạng số thập phân, Sunday=0
  • %x - Biểu diễn date ưu tiên, không có time
  • %X - Biểu diễn time ưu tiên, không có date
  • %y - Năm, không có century (dãy từ 00 tới 99)
  • %Y - Năm bao gồm cả century
  • %Z hoặc %z - Là timezone
  • %% - Hằng ký tự %

Trả về giá trị

Giá trị trả về này là struct_time như được trả về bởi gmtime() hoặc localtime().

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của strptime() trong Python.

import time

 

struct_time = time.strptime("30 Nov 15", "%d %b %y")

print "Tuple duoc tra ve la: %s " % struct_time

Chạy chương trình Python trên sẽ cho kết quả:

Tuple duoc tra ve la: (2015, 11, 30, 0, 0, 0, 3, 335, -1)

11. time.time()

Trả về time dưới dạng một số thực được diễn đạt bởi số giây từ epoch, trong UTC

Cú pháp

Cú pháp của time() trong Python:

time.time()

Chi tiết về tham số:

  • NA

Trả về giá trị

Trả về time dưới dạng một số thực được diễn đạt bởi số giây từ epoch, trong UTC.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của time() trong Python.

import time

 

print "time.time(): %f " %  time.time()

print time.localtime( time.time() )

print time.asctime( time.localtime(time.time()) )

Chạy chương trình Python trên sẽ cho kết quả:

time.time(): 1234892919.655932

(2009, 2, 17, 10, 48, 39, 1, 48, 0)

Tue Feb 17 10:48:39 2009

12. time.tzset()

Phục hồi các qui ước về thời gian được sử dụng bởi các chương trình con của thư viện. Biến môi trường TZ xác định cách được thực hiện

Cú pháp

Cú pháp của tzset() trong Python:

time.tzset()

Chi tiết về tham số:

  • NA

Trả về giá trị

Phương thức này không trả về bất cứ giá trị nào.

Chương trình Python ví dụ

Ví dụ sau minh họa cách sử dụng của tzset() trong Python.

import time

import os

 

os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'

time.tzset()

print time.strftime('%X %x %Z')

os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'

time.tzset()

print time.strftime('%X %x %Z')

Chạy chương trình Python trên sẽ cho kết quả:

13:00:40 02/17/09 EST

05:00:40 02/18/09 AEDT

Có hai thuộc tính quan trọng có sẵn với time Module là:

  • time.timezone: Thuộc tính time.timezone là số giây trong local timezone (không DST) từ UTC (>0 trong Americas; <=0 trong Europe, Asia, Africa).
  • time.tzname: Thuộc tính time.tzname là một cặp các chuỗi biểu diễn locale và biểu diễn phụ thuộc, mà tương ứng là tên của local timezone với và không với DST.

calendar Module trong Python

Python cung cấp calendar Module để giúp bạn hiển thị Calendar. Ví dụ:

import calendar

print "Thang hien tai la:"

cal = calendar.month(2014, 6)

print cal

Kết quả là:

Thang hien tai la:
   November 2015
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
30

Có rất nhiều hàm và phương thức đã được xây dựng sẵn trong calendar Module giúp bạn làm việc với Calendar. Dưới đây là một số hàm và phương thức:

Hàm

Miêu tả

Hàm prcal(year)

In cả calendar của năm

Hàm firstweekday()

Trả về ngày trong tuần đầu tiên. Theo mặc định là 0 mà xác định là Monday

Hàm isleap(year)

Trả về true nếu năm đã cho là năm nhuận, nếu không là false

Hàm monthcalendar(year,month)

Trả về một list gồm các ngày trong tháng đã cho của năm dưới dạng các tuần

Hàm leapdays(year1,year2)

Trả về số ngày nhuận từ năm year1 tới năm year2

Hàm prmonth(year,month)

In ra tháng đã cho của năm đã cung cấp

Dưới đây là ví dụ cho một số hàm:

Hàm firstweekday()

import calendar

print calendar.firstweekday()

Kết quả là:

0

Hàm isleap(year)

import calendar

print calendar.isleap(2000)

Kết quả là:

True

Hàm monthcalendar(year,month)

import calendar

print calendar.monthcalendar(2015,11)

Kết quả là:

[[0, 0, 0, 0, 0, 0, 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], [30, 0, 0, 0, 0, 0, 0]]

Hàm prmonth(year,month)

import calendar

print calendar.prmonth(2015,11)

Kết quả là:

   November 2015
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
30
None