合法要求

  • 一年仅十二个月
  • 4,6,9,11月仅30天,1,3,5,7,8,10,12月仅31天
  • 闰年2月29天,否则28天
  • 输入的变量年,月,日为数字

代码:

<?php
//PHP中判断输入的字符串是否是合法日期
function checkdate($data){
$date=strtotime($data);
if($data==(date("Y-m-d", $date))|| $data==(date("Y-m-j", $date))||$data==(date("Y-n-d", $date))||$data==(date("Y-n-j", $date)))
echo "合法<br>";
else
echo "非法<br>";
}
//实例
checkdate("2008-");//输出“非法”
checkdate("a-b-c");//输出“非法”
checkdate("2009-2-29");//输出“非法”
checkdate("2009-03-31");//输出“非法”
checkdate("2008-01-10");//输出“合法”
checkdate("2008-2-29");//输出“合法”
?>

碎碎念与笔记

当我在写这一段碎碎念的时候其实我是想举例参考其他代码时无法实现的部分错误性,可是重新验证大概只是我当时又在哪个地方打错了什么字符,内心十分复杂。

大概思路就是将输入的字符串转换为时间戳的形式,再转换为字符串性可自定义的日期形式与原字符串进行一个比较。

strtotime()函数限定了一年仅12月,1个月最多只有31天否则返回false。但像4月31日这样的输入同样存在时间戳,进一步用date()函数将其转化为日期格式时输出的是5月1日,因此与原字符串进行比对是判断日期是否合法的关键方法。

var_dump(date("Y-m-d",$time = strtotime("2018-4-31")));
//输出string '2018-05-01' (length=10)

大部分参考代码在$data==(date("Y-m-d", $date))就差不多到此为止了,因此在输入"2018-2-1"这样的数据时大概会判断错误。因为被比较的字符串为“2018-2-1”,与之比较的字符串在经过date()函数转化后为“2018-02-01”("Y-m-d"自动补0)

var_dump(date("Y-m-d",$time = strtotime("2018-2-1")));
//输出string '2018-02-01' (length=10)

感觉可能还是有一点简化的空间,如果以后想出来再修改这一篇博客吧。✧。(ˊᗜˋ)

PHP 关于判断输入日期是否合法的更多相关文章

  1. Javascript Date 判断输入日期是否正确

    JavaScript的Date对象有容错性,可将随意给定的日期的年月日自动生成正确的日期时间 //JavaScript中Date对象容错性 function dateCheck(){ var date ...

  2. C#字符串截取、获取当前电脑时间、判断输入日期对错 随手记

    字符串截取:这个就当复习了,看意见就可以 //身份证生日截取 //Console.WriteLine("请输入18位身份证号:"); //string x = Console.Re ...

  3. python判断输入日期是该年的第几天

    1.输入日期,判断日期是该年度的第几天 iyear = int(input("请输入年:\n")) imonth = int(input("请输入月:\n")) ...

  4. C#正则表达式判断输入日期格式是否正确

      /// <summary>        /// 是否为日期型字符串        /// </summary>        /// <param name=&qu ...

  5. Python中判断是否为闰年,求输入日期是该年第几天

    #coding = utf-8 def getLastDay(): y = int(input("Please input year :")) m = int(input(&quo ...

  6. java实现判断时间是否为合法时间

    最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了.所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后 ...

  7. C# 验证给定的字符串形式的日期是否合法

    用于验证日期的有效性,对于用户输入的不规则日期也作了简单处理,比如用户输入了“今天”,则代码会认为用户要返回的是今天的日期,另外可以对纯数字的日期进行解析,比如:20130906 /// <su ...

  8. Python练习笔记——计算输入日期为改年的第几天、星期几

    # 输入年月日,如:1995年12月10日,计算是该年的第几天?# 同时计算出当天是星期几? print("请依据提示依次输入您想查询的年 月 日") # 第一段代码块(年月日输入 ...

  9. js实现用户输入日期算出是今年的第几天

    const rs = require("readline-sync"); // 根据用户输入的年月日输出第几天 // 欢迎 console.log("欢迎来到查询系统&q ...

随机推荐

  1. centos7.4下的python3.6的安装

    1.系统环境 :centos 7.4 最小化安装 2.安装过程 yum install wget      安装下载工具 wget https://www.python.org/ftp/python/ ...

  2. HTTP深入浅出 http请求完整过程

    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求 ...

  3. JavaWeb处理GET、POST时的编码乱码问题

    对于GET方法,只要设置了res.setContentType("text/html;charset=UTF-8"), req.getParameter()就不会产生乱码. 对于P ...

  4. day04 流程控制

    在python中流程控制主要有三种:顺序流程.分支流程.循环流程 1.顺序流程:在宏观上,python程序的运行就是自上而下的顺序流程: 2.分支流程:分支流程主要是  if...else....流程 ...

  5. Mac 下GitHub 访问慢解决方案

    1.GitHub下载是指向了Amazon的服务器 下载地址是http://github-cloud.s3.amazonaws.com/   解决方案是更改host文件,使该域名指向香港的服务器 2.去 ...

  6. C# 高级编程04----类

    一.类和结构: 相同点: 1. 类和结构都是创建对象的模板,包含数据成员和方法成员 不同点: 1.在内存中的存储方式: 1)类是存储在堆内存上的引用类型,结构是存储在栈内存的值类型 2)结构不支持继承 ...

  7. TLS详解

    TLS加密通信, 开始使用协商的秘钥进行加密通信 1.服务器也可以要求验证客户端,即实现双向的验证, 2.会话缓存握手过程,为了建立握手的速度,减少协议带来的性能方面的降低和资源方面的消耗,TLS协议 ...

  8. https请求之绕过证书安全校验相关配置

    需在weblogic服务器上配置内存溢出的地方加入一行配置: -DUseSunHttpHandler=true      注:空格隔开 然后调用工具类:https://www.cnblogs.com/ ...

  9. 企业面试必会shell

    企业面试题1: 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [root@oldboy oldboy]# sh /serv ...

  10. 抓取某网站信息时遇到的问题及解决 The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set

    var response = httpClient.SendAsync(requestMessage).Result; content = response.Content.ReadAsStringA ...