这是我的问题。输出日期与我剪切的字符串不同。我已经尝试了下面的代码,这一天与原始日期不符。它应该是“26”但输出“02”,给我解决方案。
代码:
$line = 'File=D:\Shared\print\2017\september\26\printing\baryun - cetak transferpaper.tif';
$r = "/^File=D:\\\\[a-zA-Z]+\\\\[a-z]+\\\\([0-9]{4})\\\\([a-z]+)\\\\([0-9]{1,2})/";
if (preg_match($r, $line, $match)) {
$date = $match[1]."-".$match[2]."-".$match[3];
echo $date."<br>";
$xtime = strtotime($date);
$tes = date("Y-m-d",$xtime);
echo $tes;
}
输出:
2017-september-26
2017-09-02
当我尝试这段代码时
if (preg_match($r, $line, $match)) {
$date = $match[1]."-".$match[2]."-".$match[3];
echo $date."<br>";
$xtime = date_create($date);
$tes = date_format($xtime,"Y-m-d");
echo $tes;
输出,第01天。请帮助我
2017-september-26
2017-09-01
答案 0 :(得分:2)
您可以使用date_create_from_format
将日期换成适当的
echo $date."<br>";
$tes=date_create_from_format("Y-F-d",$date);
echo date_format($tes,"Y-m-d");
答案 1 :(得分:1)
这是因为您尝试传递的日期字符串格式不正确。
如下所示: -
$r = "/([0-9]{4})\\\\([a-z]+)\\\\([0-9]{1,2})/"; // curtale your regex
if (preg_match($r, $line, $match)) {
$date = $match[3]."-".$match[2]."-".$match[1]; //change the pattern
echo $date."<br>";
$xtime = strtotime($date);
$tes = date("Y-m-d",$xtime);
echo $tes;
}