Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP解析日期字符串_Php_Date_Parsing - Fatal编程技术网

PHP解析日期字符串

PHP解析日期字符串,php,date,parsing,Php,Date,Parsing,如果我有一个日期字符串: $date = "08/20/2009"; 我想把日期的每一部分分开: $m = "08"; $d = "20"; $y = "2009"; 我该怎么做 我应该使用一个特殊的日期函数吗?还是别的什么 谢谢 就可以做到这一点: $pieces = explode("/", $date); $d = $pieces[1]; $m = $pieces[0]; $y = $pieces[2]; 或者,您可以在一行中完成(请参阅评论-谢谢): 一种方法是: $time =

如果我有一个日期字符串:

$date = "08/20/2009";
我想把日期的每一部分分开:

$m = "08";
$d = "20";
$y = "2009";
我该怎么做

我应该使用一个特殊的日期函数吗?还是别的什么

谢谢

就可以做到这一点:

$pieces = explode("/", $date);
$d = $pieces[1];
$m = $pieces[0];
$y = $pieces[2];
或者,您可以在一行中完成(请参阅评论-谢谢):


一种方法是:

$time = strtotime($date);
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);

总是这样吗?或者它会是任何类型的文件格式

试试Strottime

比如:

if(($iTime = strtotime($strDate))!==false)
{
 echo date('m', $iTime);
 echo date('d', $iTime);
 echo date('y', $iTime);
}

多米尼克的回答很好,但是如果日期总是以相同的格式,你可以使用以下内容:

$m = substr($date,0,2);
$d = substr($date,3,2);
$y = substr($date,-4);
不必使用数组或爆炸

比尔H

这个怎么样:

list($m, $d, $y) = explode("/", $date);
一个快速的一行程序。

查看PHP的。除非您确定输入的格式总是一致的,并且首先对其进行验证,否则它更稳定、更灵活(更不用说更容易),让PHP尝试为您解析格式

e、 g


如果有给定的格式,则应使用对象

请注意,您当然只能使用一个调用


有关国际化日期解析,请参阅IntlDateFormatter::parse-

例如:

$f = new \IntlDateFormatter('en_gb', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
$dt = new \DateTime();
$dt->setTimestamp($f->parse('1/2/2015'));

列表($m,$d,$y)=分解(“/”,$date);啊,但是您的响应更健壮。由于时间戳的限制,strotime并不总是有效。假设你想解析第一次世界大战,你不能将1914年8月28日转换为有效的时间戳。为什么要避免爆炸?如果日期始终采用相同的格式,explode将完美工作,并且正如@GiDo所暗示的,将根据意图进行自我记录。如果要避免使用数组,则
将元素列成不同的变量。
<?php
//Both inputs should return the same Month-Day-Year
print_r(date_parse("2012-1-12 51:00:00.5"));
print_r(date_parse("1/12/2012"));
?>
$date = DateTime::createFromFormat('m/d/Y', '08/20/2009');
$m = $date->format('m');
$d = $date->format('d');
$y = $date->format('Y');
$newFormat = $date->format('d-m-Y');
$f = new \IntlDateFormatter('en_gb', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
$dt = new \DateTime();
$dt->setTimestamp($f->parse('1/2/2015'));