当前位置:  开发笔记 > 编程语言 > 正文

以PHP格式输入和验证自定义日期时间的最佳方法

如何解决《以PHP格式输入和验证自定义日期时间的最佳方法》经验,为你挑选了1个好方法。

就前端可用性和PHP DATE_TIME验证而言,这是一个双重问题.

我正在为一个想要添加项目完成日期的客户的网站工作(因此可以按顺序列出项目).他将是唯一一个使用管理界面的人,所以我希望它尽可能简单.

我将日期存储为SQLite数据库中的DATE_TIME.

我想要求客户至少输入年份和月份,并选择将日,小时,分钟,秒添加到DATE_TIME.如果未设置,则默认为最小数字.

我认为最好的方法也是最简单的方法是使输入(左)和结果(右)的单个输入形式.让他使用xxxx/xx/xx/xx/xx/xx作为格式.

2009/08       = 2009-08-01 00:00:01
2009/08/01    = 2009-08-01 00:00:01
2009/08/01/05 = 2009-08-01 05:00:01

(默认添加一秒,否则将是前一天)

我首先尝试将输入爆炸成数组并使用正则表达式验证每个日期部分.它真的很乱,我无法弄清楚如何验证适当的范围,比如/ [1980-2009] /或/ [01-12] /(这不像我预期的那样工作).此外,/ [(0-9){2}] /显然不适用于本月.

另一个选项是使每个日期部分成为单独的选择字段.使每个字段在一个月后可选.但是在html输出中变得混乱,同样假设每个月没有31天,我需要一些javascript来改变日期字段,具体取决于选择的月份.这太多了.使用单个字段似乎也更容易,更快捷.

你们建议什么是输入和验证自定义日期时间的最佳方式?



1> Josh..:

我建议在日期调用strtotime(),这样他就可以输入各种日期格式,包括月/年,日/月/年,日/月/年小时:分钟和年 - 月 - 日小时:分钟

如果strtotime无法确定日期是什么,则返回false(在旧版本的PHP中为-1,请查看您的手册).所以你的一般代码是:

    通过stripslashes(如果需要)和strtotime运行输入

    检查值是否为=== false.如果是,则显示错误

    否则,格式化数据库期望使用date()的时间

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有