Thư viện Python dateutil
được thiết kế cho việc này [và hơn thế nữa]. Nó sẽ tự động chuyển đổi điều này thành đối tượng datetime
cho bạn và tăng
>>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
0 nếu không.Ví dụ:
>>> from dateutil.parser import parse
>>> parse["2003-09-25"]
datetime.datetime[2003, 9, 25, 0, 0]
Điều này sẽ tăng
>>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
0 nếu ngày không được định dạng chính xác:>>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
dateutil
cũng cực kỳ hữu ích nếu bạn bắt đầu cần phân tích các định dạng khác trong tương lai, vì nó có thể xử lý hầu hết các định dạng được biết đến một cách thông minh và cho phép bạn sửa đổi thông số kỹ thuật của mình: dateutil
Các ví dụ phân tích cú pháp.
Nó cũng xử lý thời gian nếu bạn cần điều đó.
Cập nhật dựa trên nhận xét:
4 cũng chấp nhận đối số từ khóa >>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
5 kiểm soát xem ngày hoặc tháng dự kiến sẽ đến trước nếu ngày không rõ ràng. Điều này mặc định là sai. Ví dụ.: >>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
>>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
4 also accepts the keyword argument >>> parse["2003-09-251"]
Traceback [most recent call last]:
File "", line 1, in
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 720, in parse
return DEFAULTPARSER.parse[timestr, **kwargs]
File "/Users/jacinda/envs/dod-backend-dev/lib/python2.7/site-packages/dateutil/parser.py", line 317, in parse
ret = default.replace[**repl]
ValueError: day is out of range for month
5 which controls whether the day or month is expected to come first if a date is ambiguous. This defaults to False. E.g.>>> parse['11/12/2001']
>>> datetime.datetime[2001, 11, 12, 0, 0] # Nov 12
>>> parse['11/12/2001', dayfirst=True]
>>> datetime.datetime[2001, 12, 11, 0, 0] # Dec 11
Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách thực hiện xác thực ngày trong Python. Bây giờ chúng ta thấy 2 phương pháp để hoàn thành nhiệm vụ này -
Sử dụng hàm datetime.strptime []
Sử dụng hàm dateUtil.parser.parse []
Phương pháp 1: Sử dụng hàm DateTime.strptime []
Thuật toán [bước]
Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -
Sử dụng từ khóa nhập, để nhập mô -đun DateTime [để làm việc với ngày và giờ].datetime[To work with dates and times] module.
Nhập ngày dưới dạng chuỗi và tạo một biến để lưu trữ nó.
Nhập định dạng ngày dưới dạng chuỗi và tạo một biến khác để lưu trữ nó.
Sử dụng các khối ngoại trừ thử để xử lý các ngoại lệ [trong Python, các câu lệnh thử và ngoại trừ được sử dụng để xử lý các lỗi này. Khối thử được sử dụng để kiểm tra một số mã cho các lỗi, tức là mã bên trong khối thử sẽ thực thi nếu chương trình Không chứa lỗi. Mặt khác, mã trong khối ngoại trừ sẽ được thực thi bất cứ khi nào chương trình gặp lỗi trong khối thử trước đó]try−except blocks for handling the exceptions[In Python, the Try and Except statements are used to handle these errors. The try block is used to check some code for errors, i.e. the code inside the try block will execute if the program contains no errors. The code within the except block, on the other hand, will be executed whenever the program encounters an error in the preceding try block]
Trong khối thử, hãy truyền định dạng chuỗi ngày và ngày đã cho làm đối số cho hàm strptime [] [định dạng thời gian theo định dạng chuỗi vào một đối tượng thời gian ngày] của lớp DateTime của mô -đun DateTime và lưu kết quả trong một biến
In kết quả trên trong khối thử. Ở đây nó in ngày được định dạng nếu không có lỗi.
Nếu xác thực ngày ở trên không thành công thì nó sẽ thực thi khối ngoại trừ. Bên cạnh khối ngoại trừ, hãy in văn bản thích hợp nếu giá trị xảy ra.ValueError occurs.
Thí dụ
Chương trình sau đây trả về liệu ngày đã cho có hợp lệ hay không sử dụng hàm strptime [] -
import datetime date_string = '2017-12-31' date_format = '%Y-%m-%d' try: dateObject = datetime.datetime.strptime[date_string, date_format] print[dateObject] except ValueError: print["Incorrect data format, should be YYYY-MM-DD"]
Đầu ra
Khi thực hiện, chương trình trên sẽ tạo ra đầu ra sau -
2017-12-31 00:00:00
Bạn có thể sử dụng nhiều chỉ thị khác để phân tích ngày. Sau đây là các chỉ thị được hỗ trợ bởi chuỗi định dạng của Strptime [].
%một | Tên tuần viết tắt của địa phương. |
%MỘT | Tên đầy đủ của địa điểm. |
%b | Tên tháng viết tắt của Locale. |
%B | Tên đầy đủ của địa điểm. |
%c | Đại diện ngày và thời gian thích hợp của địa phương. |
%d | Ngày trong tháng dưới dạng số thập phân [01,31]. |
%H | Giờ [đồng hồ 24 giờ] dưới dạng số thập phân [00,23]. |
%TÔI | Giờ [đồng hồ 12 giờ] dưới dạng số thập phân [01,12]. |
%j | Ngày trong năm dưới dạng số thập phân [001.366]. |
%m | Tháng dưới dạng số thập phân [01,12]. |
%M | Phút như một số thập phân [00,59]. |
%P | Địa điểm tương đương với AM hoặc PM. |
%S | Thứ hai là một số thập phân [00,61]. |
%U | Số tuần của năm [Chủ nhật là ngày đầu tiên trong tuần] dưới dạng số thập phân [00,53]. Tất cả các ngày trong một năm mới trước Chủ nhật đầu tiên được coi là vào tuần 0. |
%w | Ngày trong tuần là một số thập phân [0 [Chủ nhật], 6]. |
%W | Số tuần của năm [thứ Hai là ngày đầu tiên trong tuần] dưới dạng số thập phân [00,53]. 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. |
%x | Đại diện ngày thích hợp của địa phương. |
%X | Đại diện thời gian thích hợp của địa phương. |
%y | Năm không có thế kỷ như một số thập phân [00,99]. |
%Y | Năm với thế kỷ như một số thập phân. |
%Z | Tên múi giờ [không có ký tự nếu không có múi giờ tồn tại]. |
%% | Một ký tự "%" theo nghĩa đen |
Phương pháp 2: Sử dụng hàm DateUtil.parser.parse []
Trong phương pháp này, chúng tôi sử dụng một chức năng Inbuilt riêng biệt, DateUtil.parser, để kiểm tra định dạng được xác thực. Điều này không yêu cầu định dạng để xác nhận một ngày.dateutil.parser, to check for validated format. This does not require the format to validate a date.
Thuật toán [bước]
Sau đây là các thuật toán/các bước được tuân thủ để thực hiện nhiệm vụ mong muốn -parser from dateutil module.
The parser module can parse datetime strings in a number of different formats. To parse dates and times in Python, there is no better package than dateutil. The tz module includes everything needed to look for timezones. When these modules are used together, it is relatively simple to convert strings into timezone−aware datetime objects.
Nhập ngày dưới dạng chuỗi và tạo một biến để lưu trữ nó.
Nhập định dạng ngày dưới dạng chuỗi và tạo một biến khác để lưu trữ nó.
Sử dụng các khối ngoại trừ thử để xử lý các ngoại lệ [trong Python, các câu lệnh thử và ngoại trừ được sử dụng để xử lý các lỗi này. Khối thử được sử dụng để kiểm tra một số mã cho các lỗi, tức là mã bên trong khối thử sẽ thực thi nếu chương trình Không chứa lỗi. Mặt khác, mã trong khối ngoại trừ sẽ được thực thi bất cứ khi nào chương trình gặp lỗi trong khối thử trước đó]try−except blocks for handling the exceptions. Inside the try block, parse the given date string using the parse[] function. Here it prints true if the given date is correct.
Nếu ngày không chính xác/không hợp lệ thì mã ngoại trừ sẽ được thực thi. Ở đây nếu có lỗi phân tích cú pháp cho ngày đã cho thì nó sẽ ném valueError để khối ngoại trừ xử lý valueError và chúng tôi in một số văn bản để nói rằng ngày đã cho không được xác thực.
Thí dụ
Chương trình sau đây trả về liệu ngày đã cho có hợp lệ hay không sử dụng hàm parse [] -
from dateutil import parser date_string = '23-41-2021' print["Input Date:", date_string] try: print[bool[parser.parse[date_string]]] except ValueError: print["Incorrect data format"]
Đầu ra
Khi thực hiện, chương trình trên sẽ tạo ra đầu ra sau -
Input Date: 23-41-2021 Incorrect data format
Sự kết luận
Chúng tôi đã học cách xác nhận một ngày nhất định bằng hai phương pháp khác nhau trong bài viết này. Chúng tôi cũng đã tìm hiểu về các chỉ thị khác mà chức năng Strptime [] hỗ trợ.
Cập nhật vào ngày 22 tháng 9 năm 2022 11:25:51
- Câu hỏi và câu trả lời liên quan
- Làm thế nào để thực hiện xác thực biểu mẫu cơ bản bằng JavaScript?
- Xác thực định dạng ngày bằng C# Regex
- Xác thực định dạng ngày bằng cách sử dụng Java Regex
- Xác thực ngày bằng cách sử dụng biểu thức thông thường của Java
- Xác thực mật khẩu trong Python
- Làm thế nào chúng ta có thể làm toán ngày và thời gian trong Python?
- Làm thế nào để chúng ta sử dụng biểu thức thông thường Python để phù hợp với chuỗi ngày?
- Làm thế nào để kiểm tra xác thực minlength và maxlength của một thuộc tính trong C# bằng cách sử dụng xác thực trôi chảy?
- Làm cách nào để nhận được một ngày ISO 8601 ở định dạng chuỗi trong Python?
- Làm thế nào để bạn chuyển đổi một ngày JavaScript sang UTC?
- Làm thế nào để bạn có được một danh sách thư mục được sắp xếp theo ngày sáng tạo trong Python?
- Làm thế nào để so sánh các chuỗi ngày trong Python?
- Làm thế nào để bạn tạo một đối tượng ngày từ một ngày trong Swift Xcode?
- Làm cách nào để tính toán ngày sáu tháng kể từ ngày hiện tại bằng mô -đun Python DateTime?
- Làm thế nào để chuyển đổi ngày thành DateTime trong Python?