我有一个表格,需要dd/mm/yyyy
格式的日期我尝试使用strtotime()
函数将其转换为时间戳
但我看到它只有在您填写表格时才能使用写成dd-mm-yyyy
我该如何解决?我不知道在国外,但在意大利没有人写这样的日期dd-mm-yyyy
停止使用 strotime()
、date()
、time()
等函数,开始使用日期时间。
适用于所有类型的已知输入的完美解决方案:
$dt = DateTime::createFromFormat('d/m/Y', $yourDMYinput);
echo $dt->getTimestamp(); # or $dt->format('U');
为什么需要时间戳?
为什么要爆炸、更换甚至切断绳子???只需使用 createFromFormat。
Q1:因为低于 PHP 5.3 不支持它。
v5.5 已经出来了。我认为答案应该是最新的代码,而不是 2006 年的代码。是的,v5.2 于 2006 年发布,v5.3 于 2009 年发布(请参阅发布日期)。如果 OP 请求旧代码,请在 SO 上找到它,并用重复项关闭此问题;不要回答。
Q2:因为我不知道日期时间。
学习它。
Q3:因为我可以用
strotime()
、date()
、time()
等做更多的事情。
向我展示此函数可以执行的一件事,而日期时间不能。
"已弃用"的代码示例:
$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";
如果您有另一个已弃用代码的示例,请编辑此答案并将其添加到;)
为什么不使用str_replace?
$timestamp = strtotime(str_replace("/", "-", $dateString));
或者更好的是,在插入之前将字符串转换为YYYY-MM-DD
。
你的问题不是很清楚。
如果您从表单中收到格式为"dd/mm/yyyy"的日期,并且您需要将其转换为"yyyy-mm-dd",则只需使用 substr:
$date_eng=substr($data_ita,6,4)."-".substr($data_ita,3,2)."-".substr($data_ita,0,2);
和
$data_ita=substr($date_eng,8,2)."/".substr($date_eng,5,2)."/".substr($date_eng,0,4);
相当长。
$get_array = explode('/', 'dd/mm/yyyy');
$day = $get_array[0];
$month = $get_array[1];
$year = $get_array[2];
$time_Stamp = mktime(0,0,0,$month,$day,$year);