我以这种方式约会:2014-10-20
在变量中,使用:
date_format($myDateTime, "M jS, Y");
我得到了这个输出:Oct 20th, 2014
,直到现在还可以。当我的变量有这样的东西时出现问题:2014-10-00
使用:
$date_format($myDateTime, "M Y");
我得到这个:Sep 2014
当它被认为是Oct 2014
时(即使使用$myDateTime->modify('+1 month')
不起作用),或者当我使用此2014-00-00
时使用此date_format($myDateTime, "Y");
:
2013
我得到:stringr
如何获得正确的格式化日期?感谢。
答案 0 :(得分:2)
2014-10-00
和2014-00-00
不是有效日期。我想你看到了。但是您知道自己的格式并且可以手动解析(由-
爆炸或匹配正则表达式并解析每个元素)或更改格式以更正(使用-01而不是-00)。
案例1(爆炸):
$date = '2014-00-00'; // We need to get year
$dateParts = explode('-', $date);
$year = (int)$dateParts[0];
案例2(正则表达式):
$date = '2014-10-00';
if (preg_match('/^([0-9]{4})\-([0-9]{2})\/', $date, $matches)) {
$year = (int)$matches[1];
$month = (int)$matches[2];
} else {
throw new \Exception('Invalid date format');
}
祝你好运!
答案 1 :(得分:1)
你可以设计一些DateTime
可以接受的东西。如果您只是为了年,月和日进行枪击,则可以使用Y-m-00
预测Y-00-00
,Y-m-d
或有效的date_parse
:
// $date_string = '2014-10-20';
// $date_string = '2014-10-00';
$date_string = '2014-00-00';
$d = date_parse($date_string);
$myDateTime = new DateTime();
$myDateTime->setDate($d['year'], $d['month'] ? $d['month'] : 1, $d['day'] ? $d['day'] : 1);
print_r($myDateTime);
旁注:如果您的输入为Y-00-00
,则会将当前日期的月份和日期设置为相应的输入年份。
答案 2 :(得分:-2)
使用date()
代替其他人。
看http://www.w3schools.com/php/php_date.asp
示例:
<?php
echo date("Y-m-d");
?>
仅限年份:
<?php
echo date("Y");
?>
短月和年(例如2016年1月)
<?php
echo date("M").' '.date("Y");
?>