合法要求

  • 一年仅十二个月
  • 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. MYCP作业

    本次作业主要复习了输入流输出流的内容 作业要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt ...

  2. text-stroke实现文字描边(镂空)、text-fill-color实现文字填充&渐变(+animation实现流光字体)

    text-stroke:<' text-stroke-width '> || <' text-stroke-color '>(text-stroke-width:设置或检索对象 ...

  3. String Byte 互转

    string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...

  4. 组件或者dom的特殊属性

    key:用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes. 常用姿势: 1.结合 v-for,有相同父元素的子元素必须有唯一key. <ul> <li ...

  5. day 18 - 2 正则与 re 模块练习

    1.爬虫的例子 #爬虫的例子(方法一) import re import urllib,request import urlopen def getPage(url): response = urlo ...

  6. ubuntu 下开机启动项修复(进不去windows系统)

    1.终端输入: sudo gedit /etc/default/grub 2.更改: GRUB_DEFAULT=0    改为  GRUB_DEFAULT=4 GRUB_TIMEOUT=10  改为 ...

  7. docker中的镜像中运行Django项目

    首先要在镜像中 安装python3 以及 django2.0.4 目前我用的是这两个版本. 进入镜像 创建项目 进入项目中修改setting文件 将引号和星号添加进括号中 ALLOWED_HOSTS ...

  8. CocoaLumberjack——带颜色的Log

    CocoaLumberjack可以带颜色Log,具体的好处嘛,谁用谁知道,:] 具体步骤如下: 1. 安装XcodeColors插件 下载地址:https://github.com/robbiehan ...

  9. Spring Cloud配置中心搭建(集成Git)

    1. 在Github(或其他)创建配置中心仓库bounter-config-repo,然后在仓库创建两个配置文件:simon.properties.susan.properties,链接如下: htt ...

  10. Modbus协议栈实现Modbus RTU多主站支持

    前面我们已经详细讲解过Modbus协议栈的开发过程,并且利用协议栈封装了Modbus RTU主站和从站,Modbus TCP服务器与客户端,Modbus ASCII主站与从站应用.但在使用过程中,我们 ...