解析日期字符串

时间:2011-03-23 17:42:51

标签: php mysql string parsing datetime

我在post变量中有这个字符串

'03/21/2011'

我需要通过php解析它并将其转换为这种格式

'2011-03-21'

我正在使用php,我需要这种格式,所以我可以运行此查询

SELECT prospect as 'Prospect', company as 'Company', industry as 'Industry', created_at as 'Original Date Submitted', software as 'Software', warm_transfer as 'Warm Transfer', UserName as 'Sales Rep' FROM mercury_leads join user on UserID=user_id WHERE created_at BETWEEN '2011-01-01' AND '2011-03-22'

8 个答案:

答案 0 :(得分:3)

如果您想在PHP中处理它,最好的办法是使用strtotime()函数将字符串转换为可以使用date()函数操作的时间。

所以你会做类似的事情:

$dateStr = date('Y-m-d', strtotime('03/21/2011'));

使用strtotime()的好处是你不必担心传入的字符串的确切格式。只要它是半合理的,它就会转换它。

因此它可以处理 03/21/2011 3-21-2011 03-21-11 ,无需任何修改或特殊处理例。

答案 1 :(得分:1)

$items=explode('/','03/21/2011');
$time=mktime(0,0,0,$items[0],$items[1],$items[2]);
$isodate=date('Y-m-d',$time);

答案 2 :(得分:1)

你甚至可以从mysql解析它

select str_to_date('03/21/2011','%m/%d/%Y')

答案 3 :(得分:1)

$date = '03/21/2011';
$timestamp = strtotime($date);
$sqlDate = date('Y-m-d', $timestamp);

那应该做你需要的。

strtotime

date

答案 4 :(得分:1)

虽然有很多方法可以做到这一点,但我认为最容易理解并适用于所有日期转换的是:

$date = date_create_from_format('n/d/Y', $date)->format('Y-n-d');

这是明确的,你永远不会怀疑m / d或d / m等。

答案 5 :(得分:1)

你可以在这里看到

http://www.codegod.de/WebAppCodeGod/PHP-convert-string-to-date--AID597.aspx

或者使用PHP 5.3的Date类

答案 6 :(得分:0)

STR_TO_DATE(created_at,'%m /%d /%Y')为'原始日期已提交'。

答案 7 :(得分:0)

答案1:

你可以使用这样的东西

$dateStr = date('Y-m-d', strtotime($someDate));

N

代码可读性并不好,因为它不允许您显式地解析某种格式并在代码中使其显而易见。例如,对于外部程序员来说,由于strtotime解析多种格式,因此$ someDate的格式是不明显的。

但是,如果$ someDate可能会发生变化,并且您希望代码继续尝试规范化各种格式,那么这是一个很好的选择

N

如果数据的格式不受支持。例如,当尝试以非美国日期格式解析日期时意味着月份和日期被切换但格式使用正斜杠(21/04/78)m / d / y或dmy格式的日期通过查找消除歧义在各个组件之间的分隔符处:如果分隔符是斜杠(/),则假定为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。

答案2:

要真正使您的代码清楚您要解析的日期,并使用正确的格式验证数据进入,我会使用date_create_from_format。以下是一些有用的代码:

$server_date_str='06-10-2013 16:00:09';

$server_date_time = DateTime::createFromFormat('d-m-Y H:i:s',$server_date_str);

// check the format 

if ( !($server_date_time instanceof DateTime) ) {

  $error_array = DateTime::getLastErrors();

  throw new Exception( implode(" - ",$error_array['errors']) );

}

//convert DateTime object to Unix time stamp

$server_time = strtotime($server_date_time->format('d-m-Y H:i:s'));

//convert Unix timestamp to date string of the format 2012-10-21
$dateStr = date('Y-m-d', $server_time);

此链接详细解释了此示例:

http://boulderapps.co/parse-a-date-by-a-specific-date-format-in-php

相关问题