Chỉ vì ngày được viết bằng Lược đồ JSON, điều đó không có nghĩa là người xác thực phải kiểm tra ngày.

Lược đồ cho biết `format: date`, nhưng ngày xấu đã vượt qua quá trình xác minh. Điều này không nhất thiết có nghĩa là có lỗi trong thư viện. Cách xử lý `format` tùy thuộc vào cấu hình trình xác thực. Khi bạn nhận được thông báo "xác minh thành công", trước tiên hãy hỏi xem liệu nó đã kiểm tra loại, cấu trúc hay kiểm tra ngữ nghĩa ngày tháng.

Lược đồ JSON ghi format: date, nhưng một ngày không tồn tại nhưng vượt qua kiểm tra thường không phải là lỗi trong thư viện. Việc xử lý format phụ thuộc vào cấu hình của validator. Khi bạn gặp kết quả "xác thực thành công", trước tiên hãy xác nhận xem nó kiểm tra kiểu loại, cấu trúc hay cả ý nghĩa ngày tháng.

Bài viết này phù hợp cho các nhà phát triển và người đánh giá cần thực hiện xác thực có cấu trúc dữ liệu tài liệu và quan tâm đến độ chính xác của các trường ngày tháng. Sau khi đọc, bạn có thể xác định ý nghĩa của việc vượt qua kiểm tra, và sử dụng các bài kiểm tra đối chứng để sửa quy tắc ngày tháng.

Bài viết này sử dụng các mẫu tổng hợp để trình bày phương pháp xử lý. Mã đã được kiểm tra bằng các ví dụ trong môi trường biệt lập và không đảm bảo cho tất cả các tệp thực hoặc hiệu suất sản phẩm. Trước khi xử lý các văn bản quan trọng, vui lòng giữ lại bản chính và xem xét theo ranh giới và các mục chấp nhận trong văn bản.

Kiểm tra xác minh ngày của Lược đồ JSON chính xác là gì? Một câu kết luận

Trước tiên, hãy xác nhận xem kiểm tra format có được bật trong trình xác thực hay không, sau đó xác nhận xem các quy tắc ngữ nghĩa của ngày tháng (liệu nó có thực sự tồn tại hay không và cách diễn giải nó) có chịu trách nhiệm khác hay không.

Tình huống của bạnCác phương pháp được đề xuấtlý do
Chỉ kiểm tra format: date bằng trình xác thực mặc địnhTrước tiên, xác nhận xem FormatChecker có được kích hoạt rõ ràng hay khôngCách xử lý format phụ thuộc vào cấu hình validator
Cần xác định ngày tháng như 2026-02-30Sử dụng nó như một phản ví dụ trong tập kiểm traChuỗi này giống như một ngày tháng và không đại diện cho sự hiện diện của một lịch
Thứ tự ngày tháng của nguồn không rõ.Đánh dấu sự mơ hồ, không tự động đoánXác thực date chỉ cho biết giá trị đã chuyển đổi là hợp lệ
Các trường có thời gian và múi giờSử dụng các giao thức thời gian độc lậpMười ký tự đầu tiên không nên bị cắt một cách tùy tiện để xử lý
Được sử dụng để xác minh ngày dịchLưu raw_text và giá trị chuẩn hóa cùng lúcNgười phản biện cần xem cả nội dung gốc và phần giải thích có hệ thống

Hai kiểm tra có vẻ giống hệt nhau

2026-02-30 là một sợi dây, và hình dạng của nó giống như một ngày tháng, nhưng tháng Hai không có ngày thứ ba mươi. Chỉ kiểm tra hình dạng thông thường sẽ bỏ sót những vấn đề này. Dưới đây, sử dụng jsonschema của Python, chúng tôi so sánh validator mặc định với kết quả FormatChecker được kích hoạt rõ ràng.

Thăm dò cấu hình với ngày tháng không thể

from jsonschema import Draft202012Validator, FormatChecker

schema = {"type": "string", "format": "date"}
structural = Draft202012Validator(schema)
strict = Draft202012Validator(schema, format_checker=FormatChecker())

def valid(v, value):
    return not list(v.iter_errors(value))

assert valid(structural, "2026-02-30")
assert not valid(strict, "2026-02-30")
assert valid(strict, "2024-02-29")
assert not valid(strict, "2025-02-29")
assert not valid(strict, "26/09/2026")
assert not valid(strict, 20260926)

Ví dụ tổng hợp chỉ xác minh date. Các định dạng khác có thể có phụ thuộc tùy chọn hoặc khác biệt trong cách triển khai và nên được kiểm tra từng mục trong môi trường khóa. Tên định dạng không xác định không nên được coi là đã được kiểm tra lỗi; lỗi chính tả có thể khiến bạn cảm thấy an toàn vô nghĩa.

Định dạng ngày tháng không phải là quy tắc để diễn giải ngày tháng

Nguồn 03/04/2026 có thể đại diện cho ngày 4 tháng 3 hoặc ngày 3 tháng 4. Trước khi chuyển đổi sang biểu mẫu ISO, bạn cần chỉ định vùng nguồn, mô tả trường hoặc giao thức rõ ràng. Xác thực date chỉ có nghĩa là giá trị đã chuyển đổi là hợp lệ, nhưng không chứng minh bạn đã chọn đúng tháng.

Thông tin nguồnNên làm gìNhững điều không nên làm
Ngày lịch không tồn tạiLỗi và kiểm tra nguồnTự động chuyển sang tháng tiếp theo
Thứ tự của mặt trời và mặt trăng không rõ ràngSự mơ hồ của MarkĐoán dựa trên ngôn ngữ máy chủ
Bao gồm múi giờ và múi giờSử dụng thỏa thuận thời gian độc lậpCắt ngẫu nhiên mười ký tự đầu tiên
Trường trốngĐược xử lý theo quy tắc còn thiếuBổ sung ngày trong ngày

Bao gồm cấu hình trong kiểm thử hồi quy

Tập kiểm tra chứa ít nhất ba loại giá trị: một ngày nhuận hợp lệ, một ngày nhuận không hợp lệ và một giá trị sai. Chạy các phản ví dụ này trong quá trình triển khai hiệu quả hơn so với chỉ kiểm tra xem tệp lược đồ có tồn tại hay không. Nếu dịch vụ được triển khai trên nhiều ngôn ngữ, cùng một bộ kiểm thử nên được xác thực riêng biệt, và hành vi mặc định của hai bộ xác thực không nên được giả định là giống hệt nhau.

Đánh giá bản dịch giữ nguyên ngày gốc

Khi sử dụng kết quả trích xuất ngày để xác minh dịch OmniDoc, khuyến nghị lưu cả giá trị raw_text và giá trị chuẩn hóa. Người đánh giá cần xem "nội dung gốc là gì" và "hệ thống diễn giải nó như thế nào" để xác định sự khác biệt trong bản dịch, trích xuất hoặc chuyển đổi định dạng.

Tham khảo: Chuỗi và định dạng lược đồ JSON.

📊 So sánh cốt lõi

Các mục so sánhTrình xác thực mặc địnhKích hoạt rõ ràng FormatChecker
Phạm vi kiểm traCác loại và cấu trúcNgoài ra, hãy kiểm tra định dạng của khai báoformat
Kết luận về 2026-02-30Bạn không thể giả định rằng mình sẽ bị từ chốiCần có các ví dụ phản biện để kiểm tra thực tế nhằm xác nhận
Ý nghĩa của việc đi quaĐiều này không có nghĩa là ngày tháng là chính xác về mặt ngữ nghĩaVẫn cần xác minh giải thích ngày làm việc

🎯 Phương pháp nào phù hợp với bạn?

Nếu bạn chỉ cần xác nhận trường là chuỗi hoặc có cấu trúc đúng

Trình xác thực mặc định thường đủ dùng, nhưng hãy lưu ý rằng nó không nhất thiết kiểm tra ngữ nghĩa ngày tháng.

Nếu bạn cần xác nhận rằng ngày đó thực sự tồn tại

Bật rõ ràng FormatChecker và xác minh bằng các counterexample như 2026-02-30.

Nếu bạn muốn xác minh ngày trong tệp nguồn

Đầu tiên, xác nhận các quy tắc nguồn cho thứ tự ngày-tháng, sau đó lưu lại văn bản gốc và các giá trị đã chuẩn hóa.

Nếu dịch vụ của bạn được triển khai trên nhiều ngôn ngữ

Chạy cùng một bộ kiểm thử riêng biệt trong mỗi triển khai.

❓ Câu hỏi thường gặp (FAQ)

1. Lược đồ đã viết format: date, vậy tại sao những ngày xấu vẫn có thể trôi qua?

Việc xử lý format phụ thuộc vào cấu hình trình xác thực; theo mặc định, ngữ nghĩa ngày tháng có thể không được kiểm tra.

2. Tại sao 2026-02-30 lại là giá trị kiểm thử hữu ích?

Trông như một ngày tháng, nhưng tháng Hai không có ngày thứ ba mươi. Chỉ tập trung vào ngoại hình sẽ bỏ qua những vấn đề kiểu này.

3. Điều gì xảy ra nếu bạn sử dụng tên định dạng không xác định?

Không nên coi là đã được kiểm tra; lỗi chính tả có thể khiến bạn cảm thấy an toàn sai lệch.

4. 03/04/2026 nên được chuyển đổi như thế nào?

Khu vực nguồn, mô tả trường hoặc sự đồng thuận rõ ràng là bắt buộc. Nếu không, không thể xác định được nó là ngày 4 tháng 3 hay ngày 3 tháng 4.

📝 Tóm tắt

Việc vượt qua kiểm tra chỉ có nghĩa là dữ liệu đáp ứng các quy tắc đã khai báo và không có nghĩa là mọi ngày đều chính xác. Đầu tiên, xác nhận phạm vi kiểm tra của người xác thực, sau đó sửa lại việc xử lý ngày tháng bằng các ví dụ phản chiếu và quy tắc nguồn để có kết quả đáng tin cậy hơn.

Trải nghiệm ngay: Tải lên tài liệu của bạn để bắt đầu dịch, giữ nguyên định dạng gốc

Cập nhật lúc 2026-11-13