- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
Hướng dẫn sử dụng Date Time trong Python
- Tổng quan
- Khái niệm về Ticks
- time module
- datetime module
- datetime.timedelta
- datetime.date
1. Tổng quan
Python cung cấp cho bạn 4 module có liên quan tới ngày tháng và thời gian.
Module | Mô tả |
time | time là một module chỉ bao gồm các hàm, và các hằng số liên quan tới ngày tháng và thời gian, không có lớp (class) nào được định nghĩa trong module này. |
datetime | Module này định nghĩa một số lớp đại diện cho ngày tháng và thời gian. |
calendar | Module này chứa các hàm liên quan đến lịch. Nó cũng định nghĩa ra các lớp đại diện cho Lịch, và exception có liên quan. |
locale | Module này chứa các hàm sử dụng để định dạng (format), hoặc phân tích (parse) ngày tháng và thời gian dựa trên locale (vùng miền, địa lý). |
datetime module:
datetime là một module, được thiết kế dựa trên hướng đối tượng (object oriented) để làm việc với ngày tháng và thời gian trong
Python. Nó có một vài lớp đại diện cho ngày tháng và thời gian.
Class | Mô tả |
datetime.date | Một đối tượng date đại diện cho ngày tháng (date), không bao gồm thời gian, theo bộ lịch Gregorian (Dương lịch). |
datetime.datetime | Một đối tượng datetime đại diện cho ngày tháng (date) và thời gian, theo bộ lịch Gregorian. |
datetime.time | Một đối tượng time đại diện cho thời gian (time), không bao gồm ngày tháng (date). |
datetime.tzinfo | Là một lớp cơ sở trừu tượng (base abstract class) cho các đối tượng thông tin múi giờ (timezone). |
datetime.timezone | Là một lớp con trực tiếp của lớp tzinfo, theo chuẩn UTC (Coordinated Universal Time) (Giờ hợp nhất quốc tế). |
datetime.timedelta | Đối tượng timedelta mô tả một khoảng thời gian (duration), là khoảng thời gian giữa 2 thời điểm. |
calendar module:
calendar là một module cung cấp các hàm, và một vài lớp liên quan tới Lịch, nó hỗ trợ tạo (generate) ra hình ảnh của bộ lịch dưới dạng text, html, ....
2. Khái niệm về Ticks
Trong khoa học máy tính, 12h sáng ngày 1 tháng 1 năm 1970 là một thời điểm đặc biệt, nó được sử dụng để bắt đầu đếm thời gian. Thời điểm đặc biệt này được gọi là
epoch (Tạm hiểu là kỷ nguyên máy tính). Trong
Python, khoảng thời gian giữa thời điểm hiện tại và thời điểm đặc biệt nói trên được tính bằng số giây (seconds). Khoảng thời gian đó được gọi là
Ticks.
Hàm
time() trong module
time trả về số giây (seconds) tính từ thời điểm 12h sáng ngày 1 tháng 1 năm 1970 tới hiện tại. Nó trả về một kiểu số chấm động (floating point).ticketExample.py# Nhập khẩu module time. import time; # Số giây tính từ 12h sáng ngày 1-1-1970 tới hiện tại. ticks = time.time() print ("Number of ticks since 12:00am, January 1, 1970: ", ticks)Output:Number of ticks since 12:00am, January 1, 1970: 1492244686.7766237
3. time module
time là một module chỉ bao gồm các hàm, và các hằng số liên quan tới ngày tháng và thời gian, có một vài lớp (class) viết trên
C/C++ được định nghĩa trên module này. Chẳng hạn lớp
struct_time.Trên module
time, thời gian được đại diện bởi
Ticks hoặc
struct_time. Nó có các hàm để định dạng (format)
Ticks hoặc
struct_time thành string, và ngược lại phân tích (parse) một string thành
Ticks hoặc
struct_time.
0 | tm_year | (Ví dụ, 1993) |
1 | tm_mon | Phạm vi [1, 12] |
2 | tm_mday | Phạm vi [1, 31] |
3 | tm_hour | Phạm vi [0, 23] |
4 | tm_min | Phạm vi [0, 59] |
5 | tm_sec | Phạm vi [0, 61]; Xem thêm mô tả phía dưới |
6 | tm_wday | Phạm vi [0, 6], Thứ hai là 0 |
7 | tm_yday | Phạm vi [1, 366] |
8 | tm_isdst | 0, 1 hoặc -1; |
N/A | tm_zone | Viết tắt của tên múi giờ |
N/A | tm_gmtoff | offset east of UTC in seconds |
tm_secPhạm vi giây (second) thực sự là 0 đến 61; điều này được giải thích là giây nhuận (double leap seconds). Mặc dù rất rất hiếm.
Các hàm của
time gọi đến các hàm được viết trên ngôn ngữ C. Dưới đây là danh sách các hàm thông dụng, chi tiết hơn bạn có thể tham khảo tài liệu trên website chính thức của
Python.Ticks ==> struct_time
Hàm | Mô tả |
time.gmtime([secs]) | Chuyển đổi thời gian tính theo giây từ thời điểm spoch thành một struct_time trong UTC, trong đó cờ dst là 0. Nếu tham số secs không được cung cấp hoặc None, nó sẽ có giá trị mặc định trả về bởi hàm time(). |
time.localtime([secs]) | Giống với hàm gmtime() nhưng chuyển đổi thành thời gian địa phương (local time). Và cờ dst có giá trị là 1. |
Hàm
gmtime([secs]) và
localtime([secs]) đều trả về kiểu
struct_time.time_gmtimeExample.pyimport time # 1 giây sau kỷ nguyên máy tính (epoch). # Hàm này trả về một kiểu struct: struct_time ts = time.gmtime(1) print ("1 seconds after epoch: ") print (ts) print ("\n") # Thời điểm hiện tại, giống với time.gmtime( time.time() ) # Hàm này trả về một kiểu struct: struct_time ts = time.gmtime() print ("struct_time for current time: ") print (ts)
struct_time ==> TicksBạn có thể chuyển đổi một
struct_time hoặc một
Tuple đại diện cho thời gian thành
Ticks (Số giây tính từ thời điểm
epoch).time_mktime_example.pyimport time a_struct_time = time.localtime() print ("Current time as struct_time: "); print (a_struct_time) # Chuyển đổi struct_time hoặc Tuple thành Ticks. ticks = time.mktime(a_struct_time) print ("Ticks: ", ticks) # Một Tuple có 9 phần tử. aTupleTime = ( 2017, 4, 15, 13, 5, 34, 0, 0, 0) print ("\n") print ("A Tuple represents time: ") print (aTupleTime) # Chuyển đổi struct_time hoặc Tuple thành Ticks. ticks = time.mktime(aTupleTime) print ("Ticks: ", ticks)
struct_time, Ticks ==> string
Hàm | Mô tả |
time.asctime([struct_t]) | Chuyển đổi một tuple hoặc struct_time đại diện cho một thời gian như được trả về bởi gmtime() hoặc localtime() thành một string như mẫu sau: 'Sun Jun 20 23:21:05 1993'. Nếu tham số struct_t không được cung cấp, thời điểm hiện tại được trả về bởi localtime() sẽ được sử dụng. Thông tin địa phương (locale) không được sử dụng bởi asctime(). |
time.ctime([secs]) | Chuyển đổi thời gian theo số giây (seconds) từ thời điểm epoch thành một string đại diện cho thời gian máy tính (local time). Nếu tham số secs không được cung cấp hoặc None, thời gian hiện tại được trả về bởi time() sẽ được sử dụng. ctime(secs) tương đương với asctime(localtime(secs)). Thông tin địa phương (locale) không được sử dụng bởi ctime(). |
time_asctime_ctime_example.pyimport time # Một Tuple với 9 phần tử. # (Year, month, day, hour, minute, second, wday, yday, isdst) a_tuple_time = (2017, 4, 15 , 22 , 1, 29, 0, 0, 0) a_timeAsString = time.asctime(a_tuple_time) print ("time.asctime(a_tuple_time): ", a_timeAsString) a_struct_time = time.localtime() print ("a_struct_time: ", a_struct_time) a_timeAsString = time.asctime(a_struct_time) print ("time.asctime(a_struct_time): ", a_timeAsString) # Số giây tính từ 12h sáng ngày 1-1-1970 tới hiện tại. ticks = time.time() a_timeAsString = time.ctime(ticks) print ("time.ctime(ticks): ", a_timeAsString)
Phân tích và định dạngmodule
time cung cấp một số hàm sử dụng để phân tích (parse) một string thành thời gian. Và ngược lại, định dạng (format) thời gian thành một string.
Hàm | Mô tả |
time.strptime(string[, format] ) | Phân tích một string đại diện một thời gian theo một định dạng. Trả về một struct_time giống như được trả về bởi hàm gmtime() hoặc localtime(). |
time.strftime(format [, t] ) | Chuyển đổi một Tuple hoặc struct_time đại diện thời gian giống như được trả về bởi hàm gmtime() hoặc localtime() thành một string xác định bởi tham số format. Nếu nó không được cung cấp, thời gian hiện tại được trả về bởi localtime() sẽ được sử dụng. Tham số format phải là một string. ValueError có thể được ném ra (throw) nếu một trường (field) nào đó trong tham số 't' nằm ngoài phạm vi cho phép. |
Ví dụ phân tích (parse) một string thành thời gian có kiểu
struct_time.time_strptime_example.pyimport time # Một string đại diện thời gian. aStringTime = "22-12-2007 23:30:59" a_struct_time = time.strptime(aStringTime, "%d-%m-%Y %H:%M:%S") print ("a_struct_time:") print (a_struct_time)
Xem thêm về module time:- https://docs.python.org/3/library/time.html
4. datetime module
datetime là một module, được thiết kế theo hướng đối tượng để làm việc với ngày tháng và thời gian trong
Python. Nó định nghĩa một vài lớp đại diện cho ngày tháng và thời gian.
Class | Mô tả |
datetime.date | Một đối tượng date đại diện cho một ngày tháng (date), không bao gồm thời gian, theo bộ lịch Gregorian. |
datetime.datetime | Một đối tượng datetime đại diện cho một ngày tháng (date) và thời gian, theo bộ lịch Gregorian. |
datetime.time | Một đối tượng time đại diện cho thời gian (time), không bao gồm ngày tháng (date). |
datetime.tzinfo | Là một lớp cơ sở trừu tượng (base abstract class) cho các đối tượng thông tin múi giờ. |
datetime.timezone | Là một lớp con trực tiếp của lớp tzinfo, theo chuẩn UTC (Coordinated Universal Time) (Giờ hợp nhất quốc tế). |
datetime.timedelta | A timedelta object represents a duration, the difference between two dates or times. |
5. datetime.timedelta
timedelta là một lớp nằm trong module
datetime, nó mô tả một khoảng thời gian. Là sự khác biệt giữa 2 thời gian.Lớp
timedelta có 7 thuộc tính (attribute), đều có giá trị mặc định là 0.
Thuộc tính | Mô tả | Phạm vi |
days | -999999999 : 999999999 |
seconds | 0 : 86399 |
microseconds | 1 seconds = 1000,000 microseconds | 0 : 999999 |
milliseconds | 1 seconds = 1000 milliseconds |
minutes |
hours |
weeks |
Các toán tử hỗ trợ.
t1 = t2 + t3 | t2 = (hours = 10, seconds= 2) t3 = (hours = 1, minutes = 3) --> t1 = (hours= 11, minutes = 3, seconds = 2) |
t1 = t2 - t3 | t2 = (hours = 10, seconds= 2) t3 = (hours = 1, minutes = 3) --> t1 = (hours= 8, minutes = 57, seconds = 2) |
t1 = t2 * i t1 = i * t2 | t2 = (hours = 10, seconds= 2) i = 3 --> t1 = (days =1, hours = 6, seconds= 6) |
t1 = t2 | t2 = (hours = 25, seconds= 2) --> t1 = (days: 1, hours: 1, seconds: 2) |
+t1 | return t1 |
-t1 | t1 = (hours = 10, seconds= 2) --> -t1 = (days = -1, hours = 13, minutes = 59, seconds= 58) |
abs(t) | Giá trị tuyệt đối, tương đương với +t khi t.days >= 0, và là -t khi t.days < 0. t = (hours= -25, minutes = 3) --> t = (days = -2, hours = 23, minutes = 3) --> abs(t) = (days = 1, hours = 0, minutes = 57) |
str(t) | Trả về string theo mẫu [D day[s], ][H]H:MM:SS[.UUUUUU], D có thể nhận giá trị âm. |
repr(t) | Trả về string theo mẫu datetime.timedelta(D[, S[, U]]), D có thể nhận giá trị âm |
6. datetime.date
datetime.date là một lớp, đối tượng của nó đại diện cho ngày tháng (date), không bao gồm thông tin thời gianPhương thức khởi tạo (Constructor)** constructor **# MINYEAR <= year <= MAXYEAR # 1 <= month <= 12 # 1 <= day <= số ngày cho bởi year và month. date (year, month, day)Constructor của lớp
date có thể phát ra lỗi
ValueError nếu các giá trị truyền vào không hợp lệ (nằm ngoài phạm vi cho phép).Các hằng số:
Hằng số | Mô tả |
date.min | Biểu thị ngày đầu tiên trong phạm vi của lớp date, date(MINYEAR, 1, 1). |
date.max | Biểu thị ngày cuối cùng trong phạm vi của lớp date, date(MAXYEAR, 12, 31). |
date.resolution | Sự khác biệt nhỏ nhất giữa các đối tượng date không bằng nhau, timedelta(days=1). |
Các toán tử
date2 = date1 + timedelta | Cộng thêm một khoảng thời gian, timedelta |
date2 = date1 - timedelta | Trừ một khoảng thời gian, timedelta |
timedelta = date1 - date2 | Trừ hai đối tượng date. |
date1 < date2 | So sánh hai đối tượng date. |
Các phương thức:
Phương thức | Mô tả |
date.replace(year=self.year, month=self.month, day=self.day) | Trả về một đối tượng date với cùng giá trị, ngoại trừ các giá trị bị thay thế cho bởi tham số. Ví dụ: d == date(2002, 12, 31), d.replace(day=26) == date(2002, 12, 26). |
date.timetuple() | Trả về một time.struct_time như được trả về bởi time.localtime(). Trong đó giờ, phút và giây bằng 0, và cờ DST là -1. d.timetuple() tương đương với time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1)), trong đó yday = d.toordinal() - date(d.year, 1, 1).toordinal() + 1 là số thứ tự ngày trong năm, ngày 1-1 được gọi là ngày thứ 1. |
date.toordinal() | Trả về số thứ tự của ngày theo lịch Gregorian, theo đó ngày 1 tháng 1 của năm 1 có thứ tự là 1. Đối với một đối tượng date bất kỳ d, date.fromordinal(d.toordinal()) == d. |
date.weekday() | Trả về ngày trong tuần có kiểu integer, với thứ hai là 0, thứ ba là 1, .. và chủ nhật là 6. Ví dụ, date(2002, 12, 4).weekday() == 2, thứ tư. Xem thêm isoweekday(). |
date.isoweekday() | Trả về ngày trong tuần là số có kiểu integer (Theo tiêu chuẩn ISO), với thứ hai là 1, thứ ba là 2 và chủ nhật là 7. Ví dụ, date(2002, 12, 4).isoweekday() == 3, Thứ tư. Xem thêm weekday(), isocalendar(). |
date.isocalendar() | Trả về một Tuple có 3 phần tử, (ISO year, ISO week number, ISO weekday). |
date.isoformat() | Trả về một String đại diện ngày tháng theo định dạng ISO 8601, ‘YYYY-MM-DD’. Ví dụ, date(2002, 12, 4).isoformat() == '2002-12-04'. |
date.__str__() | Đối với đối tượng date d, str(d) tương đương với d.isoformat(). |
date.ctime() | Trả về String đại diện date, ví dụ date(2002, 12, 4).ctime() == 'Wed Dec 4 00:00:00 2002'. d.ctime() tương đương với time.ctime(time.mktime(d.timetuple())). Hàm ctime() được gọi phù hợp với tiêu chuẩn C khi chạy trên các nền tảng (flatform). |
date.strftime(format) | Trả về string đại diện date, theo định dạng (format) cho bởi tham số. Các mã định dạng cho giờ phút giây có giá tri 0. Xem thêm hàm strftime() và strptime() của module time. |
date.__format__(format) | Tương tự với date.strftime(). |
Các hướng dẫn lập trình Python
- Tra cứu tài liệu Python
- Các lệnh rẽ nhánh trong Python
- Hướng dẫn và ví dụ Python Function
- Lớp và đối tượng trong Python
- Thừa kế và đa hình trong Python
- Hướng dẫn và ví dụ Python Dictionary
- Hướng dẫn và ví dụ Python Lists
- Hướng dẫn và ví dụ Python Tuples
- Hướng dẫn sử dụng Date Time trong Python
- Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL
- Hướng dẫn xử lý ngoại lệ trong Python
- Hướng dẫn và ví dụ String trong Python
- Giới thiệu về Python
- Cài đặt Python trên Windows
- Cài đặt Python trên Ubuntu
- Cài đặt PyDev cho Eclipse
- Quy ước và các phiên bản ngữ pháp trong Python
- Hướng dẫn lập trình Python cho người mới bắt đầu
- Vòng lặp trong Python
Show More
Các hướng dẫn lập trình Python
- Tra cứu tài liệu Python
- Các lệnh rẽ nhánh trong Python
- Hướng dẫn và ví dụ Python Function
- Lớp và đối tượng trong Python
- Thừa kế và đa hình trong Python
- Hướng dẫn và ví dụ Python Dictionary
- Hướng dẫn và ví dụ Python Lists
- Hướng dẫn và ví dụ Python Tuples
- Hướng dẫn sử dụng Date Time trong Python
- Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL
- Hướng dẫn xử lý ngoại lệ trong Python
- Hướng dẫn và ví dụ String trong Python
- Giới thiệu về Python
- Cài đặt Python trên Windows
- Cài đặt Python trên Ubuntu
- Cài đặt PyDev cho Eclipse
- Quy ước và các phiên bản ngữ pháp trong Python
- Hướng dẫn lập trình Python cho người mới bắt đầu
- Vòng lặp trong Python
Show More
Các bài viết mới nhất
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Radio
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Hướng dẫn và ví dụ Flutter SharedPreferences
- Tạo Module trong Flutter
- Flutter upload ảnh sử dụng http và ImagePicker
- Bài thực hành Dart http CRUD
- Hướng dẫn và ví dụ Flutter image_picker
- Flutter GridView với SliverGridDelegate tuỳ biến
Show More
- Các hướng dẫn lập trình Python