解析日期字符串
我有这个字符串变量后解析日期字符串
'03/21/2011'
我需要通过PHP解析它,把它变成这种格式
'2011-03-21'
我使用PHP和我需要这个格式,所以如果你想处理在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'
,最好的办法是使用strtotime()
functi在其上将字符串转换为可以用date()
函数处理的时间。
所以,你会做这样的事情:
$dateStr = date('Y-m-d', strtotime('03/21/2011'));
有关使用strtotime()
的好处是,你不必担心你在传递字符串的确切格式,只要它的东西。半合理的,它会转换它。
因此,这将处理2011年3月21日,2011年3月21日,11年3月21日没有任何修改或特殊情况。
$items=explode('/','03/21/2011');
$time=mktime(0,0,0,$items[0],$items[1],$items[2]);
$isodate=date('Y-m-d',$time);
你甚至可以从MySQL
select str_to_date('03/21/2011','%m/%d/%Y')
STR_TO_DATE(created_at, '%M /%d /%Y')作为 '提交原始日期' 解析它。
虽然有很多方法可以做到这一点,我认为最容易理解和适用于所有日期的转换是:
$date = date_create_from_format('n/d/Y', $date)->format('Y-n-d');
这是明确的和你”我不会想知道m/d或d/m等。
你可以在这里看到它
http://www.codegod.de/WebAppCodeGod/PHP-convert-string-to-date--AID597.aspx
或使用日期类PHP 5.3的
答1:
您可以使用类似这样
$dateStr = date('Y-m-d', strtotime($someDate));
精读
这不是伟大的代码可读性,因为它不允许你明确地解析某种格式并制作该obvio我们在代码中。例如,由于strtotime分析多种格式,因此您的代码对于外部程序员而言并不明显,因为$ someDate使用了什么格式。
临
但是,如果$ someDate如有更改,并且希望代码继续尝试标准化各种格式,这是一个不错的选择
精读
如果您的数据来自于不支持的格式。例如,当试图以非美国日期格式解析日期时,意味着切换月份和日期,但格式使用正斜杠(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
的可能重复的[的strtotime失败上MM-DD-YYYY HH:MM] (http://stackoverflow.com/questions/5133703/strtotime-failing-on-mm-dd-yyyy-hhmm) – Gordon 2011-03-23 17:55:29
,你可以通过使用搜索功能找到一对[其他重复] [http:// stackoverflow .com/search?q = format + date + [php]) – Gordon 2011-03-23 17:56:25