如何从任何格式的字符串中提取日期?

时间:2014-03-24 05:40:02

标签: php

例如

$string = "Today is March 24 2014. My Birthday is on 3/24/2014";

如何用不同格式提取这两个日期?

3 个答案:

答案 0 :(得分:0)

您需要使用createFromFormat()来执行此操作,并指定应使用哪种格式进行解析。

如果您正在寻找不需要指定格式的功能,它将无法正常工作。例如:1/2/2014。首先是Februari,还是Januari第二?

因此,假设您的月份在10岁以下时没有获得前导零,那将是:

$date1 = DateTime::createFromFormat('F j Y', 'March 24 2014');
$date2 = DateTime::createFromFormat('n/j/Y', '3/24/2014');

答案 1 :(得分:0)

试试这个

 <?php
  $string = "Today is March 24 2014. My Birthday is on 3/24/2014";
  $temp=explode('.',str_replace(' My Birthday is on ','',str_replace('Today is ', '', $string)));
  echo date('Y-m-d',strtotime($temp[0]));
  echo "<br/>";
  echo date('Y-m-d',strtotime($temp[1]));
 ?>

<强>输出

2014-03-24
2014-03-24

答案 2 :(得分:-2)

我知道如何从字符串中提取一些日期,我使用,这个

试试这个

preg_match('/(\d?\d [A-Za-z]+ \d\d\d\d) at (\d\d\:\d\d)/', $editdate, $matches);

print_r($matches); 
$date = $matches[1];
$time = $matches[2];

这将适用于所有情况,虽然代码看起来很难看,

这可以很好地工作,对于第一种情况,你可以先将字符串拆分为第二种情况。