Dada una fecha, comprobar si es válida o no. Se puede suponer que la fecha dada está en el rango del 01/01/1800 al 31/12/9999.
Ejemplos:
Input : d = 10, m = 12, y = 2000 Output : Yes The given date 10/12/2000 is valid Input : d = 30, m = 2, y = 2000 Output : No The given date 30/2/2000 is invalid. The February month cannot have 30 as day.
La idea es sencilla. Necesitamos manejar las siguientes cosas.
1) y, m y d están en el rango permitido.
2) Los días de febrero están dentro del rango permitido y se maneja el año bisiesto .
3) Se manejan días en meses de 30 días.
A continuación se muestra la implementación para verificar si un año determinado es válido o no.
C++
// C++ program to check if // given date is valid or not. #include<iostream> using namespace std; const int MAX_VALID_YR = 9999; const int MIN_VALID_YR = 1800; // Returns true if // given year is valid. bool isLeap(int year) { // Return true if year // is a multiple of 4 and // not multiple of 100. // OR year is multiple of 400. return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } // Returns true if given // year is valid or not. bool isValidDate(int d, int m, int y) { // If year, month and day // are not in given range if (y > MAX_VALID_YR || y < MIN_VALID_YR) return false; if (m < 1 || m > 12) return false; if (d < 1 || d > 31) return false; // Handle February month // with leap year if (m == 2) { if (isLeap(y)) return (d <= 29); else return (d <= 28); } // Months of April, June, // Sept and Nov must have // number of days less than // or equal to 30. if (m == 4 || m == 6 || m == 9 || m == 11) return (d <= 30); return true; } // Driver code int main(void) { isValidDate(10, 12, 2000)? cout << "Yes\n" : cout << "No\n"; isValidDate(31, 11, 2000)? cout << "Yes\n" : cout << "No\n"; }
Java
// Java program to check if // given date is valid or not. import java.io.*; class GFG { static int MAX_VALID_YR = 9999; static int MIN_VALID_YR = 1800; // Returns true if // given year is valid. static boolean isLeap(int year) { // Return true if year is // a multiple of 4 and not // multiple of 100. // OR year is multiple of 400. return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } // Returns true if given // year is valid or not. static boolean isValidDate(int d, int m, int y) { // If year, month and day // are not in given range if (y > MAX_VALID_YR || y < MIN_VALID_YR) return false; if (m < 1 || m > 12) return false; if (d < 1 || d > 31) return false; // Handle February month // with leap year if (m == 2) { if (isLeap(y)) return (d <= 29); else return (d <= 28); } // Months of April, June, // Sept and Nov must have // number of days less than // or equal to 30. if (m == 4 || m == 6 || m == 9 || m == 11) return (d <= 30); return true; } // Driver code public static void main(String args[]) { if (isValidDate(10, 12, 2000)) System.out.println("Yes"); else System.out.println("No"); if (isValidDate(31, 11, 2000)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed // by Nikita Tiwari.
Python3
# Python Program to check # if a date is valid or not import datetime def date_validation(day, month, year): isValidDate = True try : datetime.datetime(int(year), int(month), int(day)) except ValueError : isValidDate = False if(isValidDate) : print ("Yes") else : print ("No") date_validation(10,12,2000) date_validation(31,11,2000) # This code is contributed by ajay0007
C#
// C# program to check if // given date is valid or not. using System; class GFG { const int MAX_VALID_YR = 9999; const int MIN_VALID_YR = 1800; // Returns true if // given year is valid. static bool isLeap(int year) { // Return true if year is a // multiple of 4 and not // multiple of 100. OR year // is multiple of 400. return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } // Returns true if given // year is valid or not. static bool isValidDate(int d, int m, int y) { // If year, month and day // are not in given range if (y > MAX_VALID_YR || y < MIN_VALID_YR) return false; if (m < 1 || m > 12) return false; if (d < 1 || d > 31) return false; // Handle February month // with leap year if (m == 2) { if (isLeap(y)) return (d <= 29); else return (d <= 28); } // Months of April, June, // Sept and Nov must have // number of days less than // or equal to 30. if (m == 4 || m == 6 || m == 9 || m == 11) return (d <= 30); return true; } // Driver code public static void Main() { if (isValidDate(10, 12, 2000)) Console.WriteLine("Yes"); else Console.WriteLine("No"); if (isValidDate(31, 11, 2000)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed // by Anant Agarwal.
PHP
<?php // PHP program to check if // given date is valid or not. // Returns true if // given year is valid. function isLeap($year) { // Return true if year is // a multiple of 4 and // not multiple of 100. // OR year is multiple of 400. return ((($year % 4 == 0) && ($year % 100 != 0)) || ($year % 400 == 0)); } // Returns true if given // year is valid or not. function isValidDate($d, $m, $y) { $MAX_VALID_YR = 9999; $MIN_VALID_YR = 1800; // If year, month and day // are not in given range if ($y > $MAX_VALID_YR || $y < $MIN_VALID_YR) return false; if ($m < 1 || $m > 12) return false; if ($d < 1 || $d > 31) return false; // Handle February month // with leap year if ($m == 2) { if (isLeap($y)) return ($d <= 29); else return ($d <= 28); } // Months of April, June, // Sept and Nov must have // number of days less than // or equal to 30. if ($m == 4 || $m == 6 || $m == 9 || $m == 11) return ($d <= 30); return true; } // Driver code { if(isValidDate(10, 12, 2000)) echo "Yes\n" ; else echo "No\n"; if(isValidDate(31, 11, 2000)) echo "Yes\n" ; else echo "No\n"; } // This code is contributed // by nitin mittal. ?>
Javascript
<script> // Javascript program to check if // given date is valid or not. const MAX_VALID_YR = 9999; const MIN_VALID_YR = 1800; // Returns true if // given year is valid. function isLeap(year) { // Return true if year // is a multiple of 4 and // not multiple of 100. // OR year is multiple of 400. return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } // Returns true if given // year is valid or not. function isValidDate(d, m, y) { // If year, month and day // are not in given range if (y > MAX_VALID_YR || y < MIN_VALID_YR) return false; if (m < 1 || m > 12) return false; if (d < 1 || d > 31) return false; // Handle February month // with leap year if (m == 2) { if (isLeap(y)) return (d <= 29); else return (d <= 28); } // Months of April, June, // Sept and Nov must have // number of days less than // or equal to 30. if (m == 4 || m == 6 || m == 9 || m == 11) return (d <= 30); return true; } // Driver code isValidDate(10, 12, 2000) ? document.write("Yes<br>") : document.write("No<br>"); isValidDate(31, 11, 2000) ? document.write("Yes<br>") : document.write("No<br>"); // This code is contributed by souravmahato348 </script>
Producción :
Yes No
Complejidad de tiempo: O(1)
Espacio auxiliar: O(1)
Este artículo es una contribución de RAHUL NITKKR . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA