我目前正在处理一个表单,其中管理员从3个下拉菜单中选择日期 并标明员工在场或缺席。
我的考勤表包含以下栏目:
我在html表单中有3个下拉菜单,分别用于YYYY,MM和DD选择。我想将这些值作为日期捕获并将其插入表中的日期列。我怎样才能做到这一点?我试过在互联网上搜索功能 但我无法有效地使用其中任何一个。
任何帮助将不胜感激。
答案 0 :(得分:2)
由于日期将插入MySQL,所有这些格式与sprintf()
或strtotime()
完全没有必要。
MySQL期望以下格式的date and time literals为日期数据类型:
•作为YYYY-MM-DD' YYYY-MM-DD中的字符串或者' YY-MM-DD'格式。一个“放松” 允许使用语法:任何标点符号都可以用作 日期部分之间的分隔符。例如,' 2012-12-31' 2012/12/31', ' 2012 ^ 12 ^ 31'和' 2012 @ 12 @ 31'是等价的。
•作为一个字符串,在“YYYYMMDD'”中没有分隔符。或者' YYMMDD' 格式,只要字符串作为日期有意义。例如, ' 20070523'和' 070523'被解释为' 2007-05-23',但' 071332' 是非法的(它有无意义的月和日部分)并成为 ' 0000-00-00&#39 ;.
•作为YYYYMMDD或YYMMDD格式的数字,前提是 数字作为约会是有道理的。例如,19830905和830905是 解释为' 1983-09-05'。
使用php中的表单输入中的简单字符串连接生成MySQL接受的格式之一,然后将此数据用作insert sql语句中的参数。
答案 1 :(得分:1)
您是否真的搜索了可能的解决方案?其中有很多:DateTime
,DateTime::createFromFormat
,或者如果您希望保持程序化:date_create
和date_create_from_format
将分别执行相同的操作:
$date = new DateTime(
sprintf('%s/%s/%s', $year, $month, $day)
);
echo $date->format('U');//get unix timestamp
阅读DateTime
manual及相关网页了解详情。
如果你所追求的只是时间戳,正如Cam建议strtotime
可能是你最好的选择:
$timestamp = strtotime(
sprintf('%s/%s/%s', $year, $month, $day)
);
根据字段类型,您要么需要时间戳,要么需要一些格式化的字符串,在这种情况下,$date->format('Y-m-d H:i:s')
有或没有H:i:s
位是最可能的候选者