正确确定日期字符串是否为该格式的有效日期 [英] Correctly determine if date string is a valid date in that format

查看:144
本文介绍了正确确定日期字符串是否为该格式的有效日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从API接收日期字符串,格式为 yyyy-mm-dd



我正在使用正则表达式来验证字符串格式,这可以正常工作,但我可以看到一些情况,根据字符串可能是正确的格式,但实际上是无效的日期。例如 2013-13-01



在PHP中有一个更好的方法来获取一个字符串作为 2013-13-01 ,并告诉它是否为格式 yyyy-mm-dd 的有效日期

解决方案

您可以使用稍微修改版本的来自PHP.net的功能。它使用 DateTime 类:

  function validateDate($ date)
{
$ d = DateTime :: createFromFormat('Ym-d',$ date);
return $ d&& $ d->格式('Y-m-d')=== $ date;
}






测试用例: p>

  var_dump(validateDate('2013-13-01')); // false 
var_dump(validateDate('20132-13-01')); // false
var_dump(validateDate('2013-11-32')); // false
var_dump(validateDate('2012-2-25')); // false

var_dump(validateDate('2013-12-01')); // true
var_dump(validateDate('1970-12-01')); // true
var_dump(validateDate('2012-02-29')); // true

演示!


I'm receiving a date string from an API, and it is formatted as yyyy-mm-dd.

I am currently using a regex to validate the string format, which works ok, but I can see some cases where it could be a correct format according to the string but actually an invalid date. i.e. 2013-13-01, for example.

Is there a better way in PHP to take a string such as 2013-13-01 and tell if it is a valid date or not for the format yyyy-mm-dd?

解决方案

You could use a slightly modified version of this function from PHP.net. It uses the DateTime class:

function validateDate($date)
{
    $d = DateTime::createFromFormat('Y-m-d', $date);
    return $d && $d->format('Y-m-d') === $date;
}


Test cases:

var_dump( validateDate('2013-13-01')  );  // false
var_dump( validateDate('20132-13-01') );  // false
var_dump( validateDate('2013-11-32')  );  // false
var_dump( validateDate('2012-2-25')  );  // false

var_dump( validateDate('2013-12-01')  );  // true
var_dump( validateDate('1970-12-01')  );  // true
var_dump( validateDate('2012-02-29')  );  // true

Demo!

这篇关于正确确定日期字符串是否为该格式的有效日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆