Kiểm tra xem ngày trong phạm vi python

Tôi muốn kiểm tra bằng Python xem ngày ngẫu nhiên được cung cấp có mơ hồ hay không.
Ví dụ. 7/3/91. Đây có thể là ngày 7 tháng 3 năm XX91 hoặc ngày 3 tháng 7 năm XX91. Như vậy, mơ hồ.

Logic của tôi là - Nếu cả ngày và tháng đều nằm trong phạm vi 1-12, thì 'Ngày' & 'Tháng' không rõ ràng. Ngoài ra, nếu 'Năm' chỉ có hai chữ số thì giá trị của nó không rõ ràng

Đây là những gì tôi đã thử -->

Các bước. 1] Đề cập đến ngày
2] Chia nhỏ ngày
3] Đề cập đến các cách kết hợp định dạng ngày khác nhau
4] Nếu định dạng ngày .
the date & month have a value between 1-12 & the year contains only 2
digits, then the date is ambiguous, else, not.

Những gì tôi đã thử

date="3/19/1991"
dmy_split=""
dmy_split=date.split['/, -']

date_formats = ['%d/%m/%Y','%m/%d/%Y','%Y/%m/%d','%d-%m-%Y','%m-%d-%Y', '%Y-%m-%d']

if [date_formats==date_formats[0] or date_formats==date_formats[3]]:
   
  if [dmy_split[0] in range [1,13] and dmy_split[1] in range [1,13] or len[dmy_split[2]]==2]:
                                                                                   print["ambiguous"] 
else:
                                                                                   print["not ambiguous"]

Vấn đề. Kết quả luôn là "không mơ hồ". logic của tôi có vẻ đúng. Xin vui lòng cho tôi biết nơi tôi đã đi sai

if đầu tiên của bạn sẽ luôn sai. Bạn đang so sánh một mảng date_formats với một chuỗi date_formats[0]. Bạn có thể loại bỏ dòng đó, vì nếu cả hai yếu tố đầu tiên nằm trong phạm vi, thì bạn biết đó là một ngày mơ hồ

Tại sao bạn không sử dụng các chức năng của mô-đun datetime sẽ thực hiện công việc hiệu quả hơn nhiều? . Và sử dụng mã trong câu trả lời đó sẽ tự động báo lỗi nếu ngày không hợp lệ

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code var     &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện có

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời câu hỏi, vui lòng.

  1. Đọc kỹ câu hỏi.
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Let's work to help developers, not make them feel stupid.


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code [CPOL]

Nếu việc chuyển chuỗi ngày tới hàm tạo Date[] không trả về ngày hợp lệ, thì bạn phải định dạng chuỗi ngày của mình theo cách khác, ví dụ:. g. yyyy-mm-dd [thêm về điều đó bên dưới]

Chúng tôi có thể so sánh các ngày bởi vì ở bên dưới, mỗi ngày lưu trữ một dấu thời gian - số mili giây trôi qua giữa ngày 1 tháng 1 năm 1970 và ngày đã cho

Mỗi ngày lưu trữ một dấu thời gian dưới mui xe, vì vậy, hành vi mặc định là so sánh dấu thời gian của các ngày, ngay cả khi bạn không gọi phương thức getTime[] một cách rõ ràng vào mỗi ngày

Chúng tôi đã sử dụng toán tử logic AND [&&] để kiểm tra xem cả hai điều kiện có được đáp ứng hay không trước khi chạy khối if của chúng tôi

Nếu ngày lớn hơn ngày bắt đầu và nhỏ hơn ngày kết thúc, thì ngày đó nằm giữa hai ngày

Nếu bạn gặp khó khăn khi tạo đối tượng Date hợp lệ từ chuỗi ngày của mình, bạn có thể chuyển 2 loại tham số cho hàm tạo Date[]

  1. một chuỗi ISO 8601 hợp lệ, được định dạng là Date[]0 hoặc chỉ là Date[]1, nếu bạn chỉ có ngày mà không có thời gian
  2. nhiều tham số được phân tách bằng dấu phẩy đại diện cho Date[]2, Date[]3 [0 = tháng 1 đến ngày 11 = tháng 12], Date[]4, Date[]5, Date[]6 và Date[]7

Dưới đây là một ví dụ tách một chuỗi và chuyển các tham số cho hàm tạo Date[] để tạo một đối tượng Date

Chuỗi ngày được định dạng là Date0, nhưng phương pháp này áp dụng cho bất kỳ định dạng nào khác

Lưu ý rằng chúng tôi đã trừ đi Date1 từ tháng khi chuyển nó cho hàm tạo Date[]

Điều này là do hàm tạo Date mong đợi một giá trị dựa trên 0, trong đó Tháng 1 = 0, Tháng 2 = 1, Tháng 3 = 2, v.v.

Chúng tôi tách chuỗi trên mỗi dấu gạch chéo về phía trước để có được một mảng các chuỗi con

Chúng tôi đã sử dụng phá hủy mảng để gán các giá trị tháng, ngày và năm cho các biến và chuyển chúng cho hàm tạo Date[]

Khi bạn đã tạo đối tượng Date từ chuỗi ngày, bạn chỉ có thể so sánh ngày giống như so sánh số vì đối tượng Date được chuyển đổi thành dấu thời gian trước khi quá trình so sánh diễn ra

Chúng tôi đã lặp lại quy trình cho từng ngày và chia nhỏ từng ngày theo dấu gạch chéo về phía trước để nhận các giá trị tháng, ngày và năm

Điều rất quan trọng là trừ Date1 khỏi giá trị của tháng, bởi vì hàm tạo Date[] dự kiến ​​giá trị dựa trên 0 cho tháng [Tháng 1 = 0, Tháng 2 = 1, Tháng 3 = 2]

Chủ Đề