合法要求

  • 一年仅十二个月
  • 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. MySQL启动出现The server quit without updating PID file错误解决办法

    启动mysql服务的时候报下面这个错: 之间网上搜了各种办法,有重新初始化的(这怎么可能,里面还有数据...),有修改启动脚本的等等,但是都没用. 其实解决办法非常简单粗暴,那就是把/etc/my.c ...

  2. Linux 定时运行设置

    脚本设置位置: /etc/cron.d SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 每个小时的01分钟执行这个脚本 ...

  3. APK改之理 手游修改改编安卓程序工具安装使用教程

    APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如 ...

  4. 用CSS实现加载的动画效果

    用纯CSS实现加载的一些动态效果,可以把加载效果中的元素分成很多个小部分,每个部分都有动画,每个部分的动画再设置相应的延迟效果,这样,看起来就是连贯的加载动画效果.代码如下: 1.效果1 <di ...

  5. 2018-2019-2 《网络对抗技术》 Exp0 Kali安装 20165221 Week1

    2018-2019-2 <网络对抗技术> Exp0 Kali安装 20165221 Week1 安装Vmware 上学期已经安装过,不再赘述. 如需安装,可参考如何安装vmware 下载v ...

  6. git查日志命令

    git常用命令 1.创建仓库 a.当前目录创建仓库,即把当前目录的文件开始用git管理,该命令会在当前目录下创建一个.git目录 git init b.指定目录创建仓库 git init 目录名 2. ...

  7. Elastichsearch实践——基本使用

    官网文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html es中的索引.类型.文档可以 ...

  8. 【Python】Flask中@wraps的使用

    先说总结,白话来讲,@wraps相当于是装饰器的装饰器. python内置的方法使用解释,看起很复杂的样子┓( ´∀` )┏ def wraps(wrapped, assigned = WRAPPER ...

  9. CentOs7.5安装PostgreSQL11

    前言 本章介绍在CentOs上安装一个PostgreSQL数据库 下一篇可能是安装 Redis 本篇使用的服务器是已经安装过Python/Nginx等常用软件的环境,因此在安装过程中可能会遇到按照本章 ...

  10. cocos creator 碰撞检测

    creator的碰撞检测系统分为碰撞检测系统和物理碰撞检测系统两个模块,并且这两个模块是相互独立的(这边主要是非物理碰撞检测系统) 1.在制作碰撞检测系统的时候要对物体进行分组,即指定节点的分组与分组 ...