将日期dd/mm/yyyy格式从表单转换为时间戳?

Gab*_*lli 5 php datetime timestamp date

我有一个格式需要日期的表单dd/mm/yyyy,我试图将其转换为带strtotime()功能的时间戳

但是我已经看到它只有在填写表格时才会有效 dd-mm-yyyy

我怎么能解决?我不在国外,但在意大利没有人写这样的日期dd-mm-yyyy

Gla*_*vić 25

停止使用strotime(),date(),time()等功能,开始使用日期时间.

适用于所有已知输入的完美解决方案:

$dt = DateTime::createFromFormat('d/m/Y', $yourDMYinput);
echo $dt->getTimestamp(); # or $dt->format('U');
Run Code Online (Sandbox Code Playgroud)

你为什么需要时间戳?

为什么要爆炸,更换甚至切割弦?只需使用createFromFormat.

Q1:因为它不支持PHP 5.3以下.

已经有v5.5了.我认为答案应该是最新的代码,而不是2006年的代码.是的v5.2是在2006年发布的,v5.3是在2009年发布的(见发布日期).如果OP请求旧代码,请在SO上找到它,并用重复关闭此问题; 不回答.

Q2:因为我不知道DateTime.

学习它.

Q3:因为我可以做更多的strotime(),date(),time()等.

告诉我这个函数可以做的一件事,而DateTime不能.

"弃用"代码示例:

$input = '12/09/2013'; # dd/mm/yyyy

$new = substr($input,6,4)."-".substr($input,3,2)."-".substr($input,0,2);
$new = strtotime($new);
echo "$new\n";

$m = explode('/', $input);
$new = mktime(0,0,0,$m[1],$m[0],$m[2]);
echo "$new\n";

$new = str_replace("/", "-", $input);
$new = strtotime($new);
echo "$new\n";

preg_match('~^(\d+)/(\d+)/(\d+)$~', $input, $m);
$new = strtotime("$m[3]-$m[2]-$m[1]");
echo "$new\n";

$m = sscanf($input, '%d/%d/%d');
$new = strtotime("$m[2]-$m[1]-$m[0]");
echo "$new\n";
Run Code Online (Sandbox Code Playgroud)

如果您有另一个已弃用的代码示例,请编辑此答案并添加它;)

  • 我对这个答案投了反对意见,虽然我基本同意你的观点,但这不是一个咆哮的论坛.不那么咆哮,请多回答. (2认同)