fork download
  1. <?php
  2. function InvertData($data) {
  3. $format = NULL;
  4. $frt = NULL;
  5. if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$data)) {
  6. $format = "Y-m-d";
  7. $frt = "d/m/Y";
  8. $dta = explode('-', $data);
  9. if (!checkdate($dta[1],$dta[2],$dta[0])){
  10. return NULL;
  11. }
  12. } else if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/",$data)){
  13. $format = "d/m/Y";
  14. $frt = "Y-m-d";
  15. $dta = explode('/', $data);
  16. if (!checkdate($dta[1],$dta[0],$dta[2])){
  17. return NULL;
  18. }
  19. }
  20. if ($format != NULL && $frt != NULL) {
  21. $data = date_create_from_format($format, $data);
  22. if ($data != NULL) {
  23. return $data->format($frt);
  24. }
  25. }
  26. return NULL;
  27. }
  28.  
  29. $resposta = InvertData("1980-05-05");
  30. if (empty($resposta)) {
  31. echo "Data inválida ...";
  32. } else {
  33. echo $resposta;
  34. }
  35. echo PHP_EOL;
  36. /**/
  37. $resposta = InvertData("80-5-5");
  38. if (empty($resposta)) {
  39. echo "Data inválida ...";
  40. } else {
  41. echo $resposta;
  42. }
  43. echo PHP_EOL;
  44. /**/
  45. $resposta = InvertData("31/12/2005");
  46. if (empty($resposta)) {
  47. echo "Data inválida ...";
  48. } else {
  49. echo $resposta;
  50. }
  51. echo PHP_EOL;
Success #stdin #stdout 0.02s 20568KB
stdin
Standard input is empty
stdout
05/05/1980
Data inválida ...
2005-12-31