就前端可用性和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来改变日期字段,具体取决于选择的月份.这太多了.使用单个字段似乎也更容易,更快捷.
你们建议什么是输入和验证自定义日期时间的最佳方式?
我建议在日期调用strtotime(),这样他就可以输入各种日期格式,包括月/年,日/月/年,日/月/年小时:分钟和年 - 月 - 日小时:分钟
如果strtotime无法确定日期是什么,则返回false(在旧版本的PHP中为-1,请查看您的手册).所以你的一般代码是:
通过stripslashes(如果需要)和strtotime运行输入
检查值是否为=== false.如果是,则显示错误
否则,格式化数据库期望使用date()的时间