Hướng dẫn how do you validate a date field in python? - làm cách nào để xác thực trường ngày tháng trong python?

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:

>>> 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 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
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 ().

Chỉ thịNghĩa
%mộtTên tuần viết tắt của địa phương.
%MỘTTên đầy đủ của địa điểm.
%bTên tháng viết tắt của Locale.
%BTê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.
%dNgày trong tháng dưới dạng số thập phân [01,31].
%HGiờ (đồng hồ 24 giờ) dưới dạng số thập phân [00,23].
%TÔIGiờ (đồng hồ 12 giờ) dưới dạng số thập phân [01,12].
%jNgày trong năm dưới dạng số thập phân [001.366].
%mTháng dưới dạng số thập phân [01,12].
%MPhút như một số thập phân [00,59].
%PĐịa điểm tương đương với AM hoặc PM.
%SThứ hai là một số thập phân [00,61].
%USố 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.
%wNgày trong tuần là một số thập phân [0 (Chủ nhật), 6].
%WSố 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.
%yNăm không có thế kỷ như một số thập phân [00,99].
%YNăm với thế kỷ như một số thập phân.
%ZTê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)

  • Sử dụng từ khóa nhập, để nhập trình phân tích cú pháp từ mô -đun DateUtil.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ó.

  • In ngày đầu vào đã cho.

  • Sử dụng các khối ngoại trừ thử để xử lý các ngoại lệ. Bên trong khối thử, phân tích chuỗi ngày đã cho bằng hàm parse (). Ở đây nó in đúng nếu ngày nhất định là chính xá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ợ.

Hướng dẫn how do you validate a date field in python? - làm cách nào để xác thực trường ngày tháng trong python?

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?

Làm cách nào để xác nhận một ngày trong Python?

Thuật toán (bước)..
Nhập ngày dưới dạng chuỗi và tạo một biến để lưu trữ nó ..
In ngày đầu vào đã cho ..
Sử dụng các khối ngoại trừ thử để xử lý các ngoại lệ. Bên trong khối thử, phân tích chuỗi ngày đã cho bằng hàm parse (). ....
Nếu ngày không đúng/không hợp lệ thì mã ngoại trừ sẽ được thực thi ..

Làm thế nào để bạn xác nhận một trường ngày?

Kiểm tra định dạng hợp lệ ..
Kiểm tra xem các giá trị đầu vào có nằm trong giới hạn ..
Chức năng kiểm tra mô -đun () ..
Hàm kiểm tra mô -đun () hàm ..
Sử dụng các chức năng này để xác thực ..
Thêm xác thực đầu vào HTML5 ..
Điều chỉnh mã cho các định dạng ngày khác nhau ..
Kiểm tra kết thúc tháng và năm nhảy ..

Làm thế nào để bạn xác thực nếu một chuỗi là một ngày?

Một cách để kiểm tra xem chuỗi là chuỗi ngày với JavaScript là sử dụng phương thức Date.Parse.Ngày.Parse trả về dấu thời gian tính bằng mili giây nếu chuỗi là một ngày hợp lệ.use the Date. parse method. Date. parse returns a timestamp in milliseconds if the string is a valid date.

Làm cách nào để kiểm tra xem một ngày có trong một tệp cụ thể trong Python không?

Phương pháp số 1: Sử dụng Strptime () trong này, hàm, Strptime thường được sử dụng để chuyển đổi ngày chuỗi thành đối tượng DateTime, được sử dụng như khi nó không khớp với định dạng hoặc ngày, tăng giá trị và do đó có thể được sử dụngTính toán hợp lệ.Using strptime() In this, the function, strptime usually used for conversion of string date to datetime object, is used as when it doesn't match the format or date, raises the ValueError, and hence can be used to compute for validity.