Tổng quan
Gần đây mình có làm việc nhiều với kiểu dữ liệu Datetime trong Python. Vấn đề mình gặp phải là xử lý nhiều loại time format khác nhau, chuyển hóa thành dạng Datetime, chuẩn hóa thời gian lưu trữ và lưu vào database. Và sau đây, mình sẽ viết bài chia sẻ về cách mình xử lý kiểu dữ liệu Datetime trong Python. Trong bài mình sẽ sử dụng Python 3 để xử lý kiểu dữ liệu Datetime.
Nội dung chính ShowShow
- Tổng quan
- Tips 1: Chuẩn hóa múi giờ sử dụng
- Tips 2: Convert String thành Datetime
- Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python
- Tips 4: Chuyển hóa kiểu native date sang UTC timezone
- Tips 5: Convert UTC sang timezone khác
- Tips 6: Chuyên từ Timestamp sang Datetime
- Tips 7: Convert Datetime sang ISO 8601
- How strftime[] works?
- Example 1: datetime to string using strftime[]
- How strftime[] works?
- Example 1: datetime to string using strftime[]
- Ví dụ 2: Tạo chuỗi từ dấu thời gian
- Danh sách mã định dạng
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 2
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 3
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 5
- 00, 01, ..., 53
Số tuần của năm [thứ Hai là ngày đầu tiên của tuần]. Tất cả các ngày trong một năm mới trước ngày thứ Hai đầu tiên được coi là vào tuần 0.
- Tổng quan
- Tips 1: Chuẩn hóa múi giờ sử dụng
- Tips 2: Convert String thành Datetime
- Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python
- Tips 4: Chuyển hóa kiểu native date sang UTC timezone
- Tips 5: Convert UTC sang timezone khác
- Tips 6: Chuyên từ Timestamp sang Datetime
- Tips 7: Convert Datetime sang ISO 8601
- Example 1: datetime to string using strftime[]
- How strftime[] works?
- Example 1: datetime to string using strftime[]
- Ví dụ 2: Tạo chuỗi từ dấu thời gian
- Danh sách mã định dạng
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 2
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 3
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 5
- 00, 01, ..., 53
Tips 1: Chuẩn hóa múi giờ sử dụng
Tips 2: Convert String thành Datetime
Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python
Tips 2: Convert String thành Datetime
Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-20T03:41:16Z'
# Dạng datetime format
date_time_python = parse[date_string]
Tips 4: Chuyển hóa kiểu native date sang UTC timezone
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
Tips 5: Convert UTC sang timezone khác
- Tips 6: Chuyên từ Timestamp sang Datetime
- Tips 7: Convert Datetime sang ISO 8601
Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python
Tips 4: Chuyển hóa kiểu native date sang UTC timezone
import datetime
# Dạng datetime
date_time_now = datetime.datetime.now[]
# Dạng timestamp
timestamp_now = date_time_now.timestamp[]
Tips 4: Chuyển hóa kiểu native date sang UTC timezone
Tips 5: Convert UTC sang timezone khác
import datetime
import pytz
# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]
# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]
Tips 6: Chuyên từ Timestamp sang Datetime
Tips 5: Convert UTC sang timezone khác
Tips 6: Chuyên từ Timestamp sang Datetime
import datetime
import pytz
# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]
# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]
# Dạng 'Asia/Ho_Chi_Minh'
VN_TZ = pytz.timezone['Asia/Ho_Chi_Minh']
date_time_vntz_now = date_time_utc_now.astimezone[VN_TZ]
print[date_time_vntz_now.tzname[]]
Tips 6: Chuyên từ Timestamp sang Datetime
Tips 7: Convert Datetime sang ISO 8601Tips 7: Convert Datetime sang ISO 8601
Example 1: datetime to string using strftime[]
import datetime
date_time_now = datetime.datetime.now[]
# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat[]
How strftime[] works?
Example 1: datetime to string using strftime[]
Example 1: datetime to string using strftime[]
Ví dụ 2: Tạo chuỗi từ dấu thời gian
Danh sách mã định dạng
How to convert a time to a stringSố tuần của năm [thứ Hai là ngày đầu tiên của tuần]. Tất cả các ngày trong một năm mới trước ngày thứ Hai đầu tiên được coi là vào tuần 0.
- Example 1: datetime to string using strftime[]
- How strftime[] works?
- Example 1: datetime to string using strftime[]
- Ví dụ 2: Tạo chuỗi từ dấu thời gian
- Danh sách mã định dạng
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 2
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 3
- import datetime date_time_now = datetime.datetime.now[] # Convert Datetime thành dạng ISO 8601 iso_format = date_time_now.isoformat[] 5
- 00, 01, ..., 53
Số tuần của năm [thứ Hai là ngày đầu tiên của tuần]. Tất cả các ngày trong một năm mới trước ngày thứ Hai đầu tiên được coi là vào tuần 0.
a = "2011-06-09"
Nội dung chính
"Jun 09,2011"
Example 2: Creating string from a timestamp
Format Code ListJun 9, 2011 at 6:272
>>> import datetime
>>> d = datetime.datetime.strptime['2011-06-09', '%Y-%m-%d']
>>> d.strftime['%b %d,%Y']
'Jun 09,2011'
Example 3: Locale's appropriate date and time
How do I change date format from YYYY MM DD in Python?Jun 9, 2011 at 6:30
How do you change a date format from a string in Python?
How do I convert datetime to date format?NPEHow do I change the date format from YYYY MM DD in pandas?
Example 3: Locale's appropriate date and time How to convert a time to a string103 gold badges921 silver badges994 bronze badges1
Đầu tiên, cũng là quan trọng nhất, chuẩn hóa múi giờ sử dụng để convert các kiểu thời gian. Mình lựa chọn sử dụng chuẩn múi giờ UTC để chuẩn hóa thời gian cho cả hệ thống cũng như làm múi giờ chuẩn để xử lý các loại format thời gian khác nhau.
Tham khảo thêm về thời gian UTC tại
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
0Xử lý bằng hàm Jun 9, 2011 at 6:31
Nếu bạn ở múi giờ Việt Nam [GMT + 7], tức nếu hiện tại là 8 giờ sáng [giờ Việt Nam] thì quy ra giờ UTC tức 1 giờ sáng [giờ UTC]. Vậy nếu Datetime đang ở múi giờ UTC, ta phải convert nó sáng giờ Việt Nammgiucamgiuca
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
46 gold badges52 silver badges70 bronze badges6 gold
badges52 silver badges70 bronze badges1
ISO 8601 là một tiêu chuẩn quốc tế, được đưa ra bởi Tổ chức tiêu chuẩn hóa quốc tế [ISO] lần đầu tiên năm 1988, mô tả quy cách viết ngày tháng và thời gian theo cách đơn giản nhất mà máy tính có thể hiểu được. Còn đối với Python ISO 8601 Datetime là string format time thông dụng.
Example 1: datetime to string using strftime[]
How strftime[] works?
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
1Example 2: Creating string from a timestamp
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
2Format Code List
How strftime[] works?
Example 2: Creating string from a timestamp
- Format Code List
- Chúng tôi đã nhập lớp
6 từ mô -đunimport datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
6. Đó là bởi vì đối tượng của lớpimport datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
6 có thể truy cập phương thứcimport datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
5.import datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
- Đối tượng
6 chứa ngày và thời gian hiện tại được lưu trữ trong biến bây giờ.import datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
- Phương pháp
5 có thể được sử dụng để tạo các chuỗi được định dạng.import datetime # Dạng datetime date_time_now = datetime.datetime.now[] # Dạng timestamp timestamp_now = date_time_now.timestamp[]
Chuỗi bạn chuyển sang phương thức import datetime
# Dạng datetime
date_time_now = datetime.datetime.now[]
# Dạng timestamp
timestamp_now = date_time_now.timestamp[]
5 có thể chứa nhiều hơn một mã định dạng.
import datetime
# Dạng datetime
date_time_now = datetime.datetime.now[]
# Dạng timestamp
timestamp_now = date_time_now.timestamp[]
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
3Ví dụ 2: Tạo chuỗi từ dấu thời gian
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
4Khi bạn chạy chương trình, đầu ra sẽ là:
Danh sách mã định dạng
Bảng dưới đây hiển thị tất cả các mã mà bạn có thể chuyển sang phương thức 5.
| Chỉ thị | Nghĩa |
Thí dụ | 0 | Tên viết tắt tên ngày trong tuần. |
Sun mon, ... | 1 | Tên đầy đủ trong tuần. |
Chủ nhật thứ hai, ... | 2 | Ngày trong tuần là một số thập phân. |
0, 1, ..., 6 | 0 | Ngày trong tháng dưới dạng số thập phân không. |
01, 02, ..., 31 | 4 | Ngày trong tháng dưới dạng số thập phân. |
1, 2, ..., 30 | 5 | Tên tháng viết tắt. |
Jan, tháng 2, ..., tháng 12 | 6 | Tên đầy đủ. |
Tháng một tháng hai, ... | 9 | Tháng dưới dạng số thập phân bằng không. |
01, 02, ..., 12 | 8 | Tháng như một số thập phân. |
1, 2, ..., 12 | 9 | Năm không có thế kỷ như một số thập phân số không. |
00, 01, ..., 99 | 40 | Năm không có thế kỷ như một số thập phân. |
0, 1, ..., 99 | 8 | Năm với thế kỷ như một số thập phân. |
2013, 2019, v.v. | 42 | Giờ [đồng hồ 24 giờ] là một số thập phân bằng không. |
00, 01, ..., 23 | 43 | Giờ [đồng hồ 24 giờ] là một số thập phân. |
0, 1, ..., 23 | 44 | Tháng dưới dạng số thập phân bằng không. |
01, 02, ..., 12 | 8 | Tháng như một số thập phân. |
1, 2, ..., 12 | 9 | Năm không có thế kỷ như một số thập phân số không. |
00, 01, ..., 99 | 40 | Năm không có thế kỷ như một số thập phân. |
0, 1, ..., 99 | 8 | Năm với thế kỷ như một số thập phân. |
2013, 2019, v.v. | 42 | Năm không có thế kỷ như một số thập phân. |
0, 1, ..., 99 | 8 | Năm với thế kỷ như một số thập phân. |
2013, 2019, v.v. | 42 | Giờ [đồng hồ 24 giờ] là một số thập phân bằng không. |
00, 01, ..., 23 | 43 | Giờ [đồng hồ 24 giờ] là một số thập phân. |
0, 1, ..., 23 | 44 | Giờ [đồng hồ 24 giờ] là một số thập phân. |
0, 1, ..., 23 | 44 | Giờ [đồng hồ 12 giờ] là một số thập phân bằng không. |
45 | Giờ [đồng hồ 12 giờ] là một số thập phân. | 1, 2, ... 12 |
46 | Locale từ AM hoặc PM. | Sáng, chiều |
47 | Phút như một số thập phân bằng không. | Sáng, chiều |
47 | Phút như một số thập phân bằng không. | 00, 01, ..., 59 |
48 | Phút như một số thập phân. | 0, 1, ..., 59 |
49 | Thứ hai là một số thập phân bằng không. | 0 |
Thứ hai là một số thập phân. | 1 | Microsecond như một số thập phân, không được dán bên trái. |
000000 - 999999
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
5Ví dụ 2: Tạo chuỗi từ dấu thời gian
import datetime
import pytz
from dateutil.parser import parse
# Dạng string time
date_string = '2019-03-21 03:41:16'
# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]
6Khi bạn chạy chương trình, đầu ra sẽ là:
Danh sách mã định dạng
Bảng dưới đây hiển thị tất cả các mã mà bạn có thể chuyển sang phương thức
5. .import datetime
# Dạng datetime
date_time_now = datetime.datetime.now[]
# Dạng timestamp
timestamp_now = date_time_now.timestamp[]
import datetime
date_time_now = datetime.datetime.now[]
# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat[]
4Chỉ thị
Nghĩa
Thí dụ
import datetime
import pytz
# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]
# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]
# Dạng 'Asia/Ho_Chi_Minh'
VN_TZ = pytz.timezone['Asia/Ho_Chi_Minh']
date_time_vntz_now = date_time_utc_now.astimezone[VN_TZ]
print[date_time_vntz_now.tzname[]]
0 Tên viết tắt tên ngày trong tuần.
import datetime
date_time_now = datetime.datetime.now[]
# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat[]
6Sun mon, ...
import datetime
import pytz
# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]
# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]
# Dạng 'Asia/Ho_Chi_Minh'
VN_TZ = pytz.timezone['Asia/Ho_Chi_Minh']
date_time_vntz_now = date_time_utc_now.astimezone[VN_TZ]
print[date_time_vntz_now.tzname[]]
1
Tên đầy đủ trong tuần. use the CONVERT[] , TRY_CONVERT[] , or CAST[] function.import datetime
import pytz
# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]
# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]
# Dạng 'Asia/Ho_Chi_Minh'
VN_TZ = pytz.timezone['Asia/Ho_Chi_Minh']
date_time_vntz_now = date_time_utc_now.astimezone[VN_TZ]
print[date_time_vntz_now.tzname[]]
Chủ nhật thứ hai, ...
import datetime
date_time_now = datetime.datetime.now[]
# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat[]
8Đại diện ngày và thời gian thích hợp của địa phương.
Thứ Hai ngày 30 tháng 9 07:06:05 2013
import datetime
date_time_now = datetime.datetime.now[]
# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat[]
9