从字符串中删除时间戳

时间:2010-11-02 09:16:31

标签: php date

任何人都可以给我一个代码来隐藏字符串中的时间戳。 我用这段代码从字符串中获取日期 假设

$date_string = "02/06/2011 11:00 am - 2:00 pm";

$date = strtotime($date_string);
$date = date('m/d/y', $date);

但我得到的输出就是这样的

 1/1/70

请建议一个更好的方法,我可以实现这个工作 我希望它显示像

02/06/2011

5 个答案:

答案 0 :(得分:4)

如果您要查找的日期已经在字符串中,并且您要做的就是删除时间范围,则不需要任何日期操作。只需删除空格后的所有内容(假设date_string的格式保持一致)。

$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date = explode(" ",$date_string);
echo $date[0];

甚至更简单(但未经测试)

echo strtok($date_string," ");  //http://codepad.org/Or1mpYOp

PHP.NET:strtok

PHP.NET:explode

答案 1 :(得分:3)

$date = strtotime($date_string);
$date = getdate($date);
$date = $date['mon'] . '/' . $date['mday'] . '/' . $date['year']

答案 2 :(得分:1)

如果显示的是02/06/2011 11:00 am - 2:00 pm,则显示$date_string而不是$date,因为strtotime('02/06/2011 11:00 am - 2:00 pm');返回布尔值false,date('m/d/y', $date)会转换到01/01/1970

尝试这样的事情

$date_string = "02/06/2011 11:00 am - 2:00 pm";
$date_exploded = explode('-',$date_string);

$date = strtotime($date_exploded[0]);
$date = date('m/d/y', $date);
echo $date;

答案 3 :(得分:0)

撇开日期解析中某些事情出错的事实,您需要注意使用00/00/00 [00]的日期格式是相当暧昧的 - 在美国这样写的日期是格式为mm / dd / yy [yy],而在英国则将其解释为dd / mm / yy [yy]。 strtotime函数不使用语言环境设置来确定哪个适用并始终采用前者。

如果我被要求解析这个,我会使用preg来提取日期部分。使用模式:

/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,4})/

给出一个数组

0=> 02/06/2011
1=> 02
2=> 06
3=> 2011

然后使用mktime生成unix timstamp。

其他方法包括使用substr提取固定长度的字符串,或者按空格划分以获取单词。

答案 4 :(得分:0)

如果您的字符串已经是日期。

$ date = substr($ records [$ datetime,0,10];