Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

36

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang xây dựng một loại ứng dụng web lịch

Tôi đã thiết lập biểu mẫu sau trong HTML

<form action='/event' method='post'>
Year ("yyyy"):  <input type='text' name='year' />
Month ("mm"):  <input type='text' name='month' />
Day ("dd"):  <input type='text' name='day' />
Hour ("hh"):  <input type='text' name='hour' />
Description:  <input type='text' name='info' />
             <input type='submit' name='submit' value='Submit'/>
</form>

Đầu vào từ người dùng sau đó được gửi trong máy chủ Cherrypy

Tôi đang tự hỏi, có cách nào để kiểm tra xem ngày mà người dùng nhập có phải là một ngày hợp lệ không?

Rõ ràng là tôi có thể viết rất nhiều câu lệnh IF, nhưng có bất kỳ chức năng nào được xây dựng có thể kiểm tra điều này không?

Cảm ơn

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

Kenorb

Phù bằng vàng 145K7676 gold badges655 silver badges712 bronze badges

hỏi ngày 3 tháng 4 năm 2012 lúc 5:57Apr 3, 2012 at 5:57

1

Bạn có thể thử làm

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)

Điều đó sẽ loại bỏ một cái gì đó như tháng> 12, giờ> 23, các bước nhảy không tồn tại (tháng = 2 có tối đa 28 trên các năm không nhảy, nếu không, các tháng khác có tối đa 30 hoặc 31 ngày)

Ngoài ra, bạn có thể cố gắng so sánh nó với một số giới hạn trên/dưới. Ví dụ.:

datetime.date(year=2000, month=1,day=1) < datetime.datetime(year=year,month=month,day=day,hour=hour) <= datetime.datetime.now()

Các giới hạn độ tỉnh trên và dưới có liên quan phụ thuộc vào nhu cầu của bạn.

Chỉnh sửa: Hãy nhớ rằng điều này không xử lý một số thứ dữ liệu nhất định có thể không hợp lệ cho ứng dụng của bạn (sinh nhật tối thiểu, ngày lễ, giờ hoạt động bên ngoài, ect.)

Đã trả lời ngày 3 tháng 4 năm 2012 lúc 6:08Apr 3, 2012 at 6:08

Roman A. Taycherroman A. TaycherRoman A. Taycher

17.8K19 Huy hiệu vàng84 Huy hiệu bạc135 Huy hiệu đồng19 gold badges84 silver badges135 bronze badges

Bạn có thể thử sử dụng DateTime và xử lý các ngoại lệ để quyết định ngày hợp lệ/không hợp lệ: Ví dụ: http://codepad.org/xrsyeijjjj

import datetime
correctDate = None
try:
    newDate = datetime.datetime(2008,11,42)
    correctDate = True
except ValueError:
    correctDate = False
print(str(correctDate))

Đã trả lời ngày 3 tháng 4 năm 2012 lúc 6:39Apr 3, 2012 at 6:39

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

DhruvpathakdhruvpathakDhruvPathak

41K15 Huy hiệu vàng113 Huy hiệu bạc172 Huy hiệu đồng15 gold badges113 silver badges172 bronze badges

Câu hỏi giả định rằng giải pháp không có thư viện liên quan đến "rất nhiều câu lệnh", nhưng nó không:

def is_valid_date(year, month, day):
    day_count_for_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if year%4==0 and (year%100 != 0 or year%400==0):
        day_count_for_month[2] = 29
    return (1 <= month <= 12 and 1 <= day <= day_count_for_month[month])

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

Sash Sinha

16.4K3 Huy hiệu vàng22 Huy hiệu bạc38 Huy hiệu đồng3 gold badges22 silver badges38 bronze badges

Đã trả lời ngày 23 tháng 8 năm 2018 lúc 8:40Aug 23, 2018 at 8:40

Anonanonanon

1011 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Sử dụng

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
3

ví dụ.

>>> from datetime import datetime
>>> print datetime(2008,12,2)
2008-12-02 00:00:00
>>> print datetime(2008,13,2)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print datetime(2008,13,2)
ValueError: month must be in 1..12

Đã trả lời ngày 3 tháng 4 năm 2012 lúc 6:06Apr 3, 2012 at 6:06

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

Jamylakjamylakjamylak

124K29 Huy hiệu vàng227 Huy hiệu bạc227 Huy hiệu Đồng29 gold badges227 silver badges227 bronze badges

2

Bạn có thể thử sử dụng mô -đun

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
4 để phân tích cú pháp ngày dễ dàng hơn:

from dateutil.parser import parse
def is_valid_date(date):
    if date:
        try:
            parse(date)
            return True
        except:
            return False
    return False

Hi vọng điêu nay co ich.

Đã trả lời ngày 30 tháng 3 năm 2020 lúc 6:22Mar 30, 2020 at 6:22

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

Codehiacodehiacodehia

1141 Huy hiệu vàng4 Huy hiệu bạc16 Huy hiệu đồng1 gold badge4 silver badges16 bronze badges

Bạn có thể thử sử dụng DateTime và xử lý các ngoại lệ để quyết định ngày hợp lệ/không hợp lệ:

import datetime

def check_date(year, month, day):
    correctDate = None
    try:
        newDate = datetime.datetime(year, month, day)
        correctDate = True
    except ValueError:
        correctDate = False
    return correctDate

#handles obvious problems
print(str(check_date(2008,11,42)))

#handles leap days
print(str(check_date(2016,2,29)))
print(str(check_date(2017,2,29)))

#handles also standard month length
print(str(check_date(2016,3,31)))
print(str(check_date(2016,4,31)))

cho

False
True
False
True
False

Đây là sự cải thiện câu trả lời của dhruvpathak và có ý nghĩa hơn khi chỉnh sửa nhưng nó đã bị từ chối vì "chỉnh sửa này được dự định để giải quyết tác giả của bài đăng và không có ý nghĩa gì khi chỉnh sửa. Nó nên được viết như một nhận xét hoặc câu trả lời."

Đã trả lời ngày 6 tháng 3 năm 2016 lúc 13:23Mar 6, 2016 at 13:23

Đây là một giải pháp sử dụng thời gian.

import time
def is_date_valid(year, month, day):
    this_date = '%d/%d/%d' % (month, day, year)
    try:
        time.strptime(this_date, '%m/%d/%Y')
    except ValueError:
        return False
    else:
        return True

Đã trả lời ngày 2 tháng 12 năm 2015 lúc 15:22Dec 2, 2015 at 15:22

1

Vì vậy, đây là giải pháp hacky của tôi để sửa cho các ngày không hợp lệ được cung cấp. Điều này giả định người dùng đang gửi từ biểu mẫu HTML chung cung cấp ngày 1-31 dưới dạng tùy chọn. Vấn đề chính là người dùng cung cấp một ngày không tồn tại trong tháng (ngày 31 tháng 9)

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
0

Đã trả lời ngày 10 tháng 10 năm 2014 lúc 14:42Oct 10, 2014 at 14:42

Daryldaryldaryl

1.13010 Huy hiệu bạc19 Huy hiệu đồng10 silver badges19 bronze badges

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
1

Đã trả lời ngày 14 tháng 9 năm 2018 lúc 4:47Sep 14, 2018 at 4:47

Hướng dẫn python check if date is valid - python kiểm tra xem ngày có hợp lệ không

2

Xây dựng trên @codehia Trả lời sau đây cho phép kiểm tra định dạng của ngày và chia một chuỗi thành năm, tháng, ngày - tất cả các giả định trên có một năm, tháng, ngày rồi.

import datetime
datetime.datetime(year=year,month=month,day=day,hour=hour)
2

output:

2021 06 01

2021 06 01

2021 06 01

2021 06 01

2021 06 01

2021 06 01

2020 12 01

2020 12 31

2020 12 31

2020 06 30

Không hợp lệ: 2020 30 6

Đã trả lời ngày 29 tháng 6 năm 2021 lúc 13:14Jun 29, 2021 at 13:14

ZvizviZvi

2.1562 huy hiệu vàng24 Huy hiệu bạc36 Huy hiệu đồng2 gold badges24 silver badges36 bronze badges

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

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 cách nào để kiểm tra xem một ngày có hợp lệ không?

Để kiểm tra xem ngày có hợp lệ không: Kiểm tra xem ngày có phải là một phiên bản của đối tượng ngày không. Hãy kiểm tra xem ngày cho hàm isnan () trả về sai.Nếu cả hai điều kiện được đáp ứng, ngày là hợp lệ.Check if the date is an instance of the Date object. Check if passing the date to the isNaN() function returns false . If both conditions are met, the date is valid.

Làm thế nào để bạn xác nhận một ngày trong yyyy mm dd trong python?

Cách xác thực định dạng chuỗi ngày trong Python..
date_string = '12 -25-2018 '.
Định dạng = "%y-%m-d".
ngày giờ.ngày giờ.Strptime (Date_String, định dạng).
In ("Đây là định dạng chuỗi ngày chính xác.").
ngoại trừ valueError:.
In ("Đây là định dạng chuỗi ngày không chính xác. Nó phải là yyyy-mm-dd").

Làm thế nào để Python xác nhận thời gian?

[0-5] [0-9] đại diện cho thời gian theo sau là 00 đến 59 ...
Nó sẽ bắt đầu từ 0-23 hoặc 00-23 ..
Nó nên được theo sau bởi một ':' (Đại tá) ..
Nó nên được theo sau bởi hai chữ số từ 00 đến 59 ..
Nó không nên kết thúc bằng 'AM', 'PM' hoặc 'AM', 'PM' ..