2017-06-13 29 views
-1

PHP,日期:点追加到一个月的短期表现

date("M.", $datetime) 

我希望得到如下的输出:

二月
三月
四月
五月(不需要点)
Jun。
Jul。

我不喜欢if语句的想法产生日期,每次检查月份的长度/数量。

有没有更简单的方法?就像一般更改月份名称一样?或者挂接到日期函数本身来实现每次运行日期函数时都会运行的if语句。

感谢

+0

'$ datetime'是什么? – RiggsFolly

回答

1

如果你不想点至五月个月后出现,你将需要某种形式的检查 - 这通常是一个if。你可以做这样的事情,检查date()返回的月份是不是5月,如果不是,可以添加一个点。

$date = date("M", $datetime); 
if (date("M") != "May") 
    $date .= "."; 

否则你需要实现自己的功能,但最终 - 你将不得不再次结束了这一点,有真的没有办法解决它 - 这是迄今为止最简单,最干净的方式。

你可以把它包装到一个函数中。你不能直接改变date()函数,但你可以创建一个你自己的函数。

function my_date($format, int $timestamp = null) { 
    if ($timestamp === null) 
     $timestamp = time(); 

    $date = date($format, $timestamp); 
    if ($format == "M" && date("M", $timestamp) != "May") 
     $date .= "."; 
    return $date; 
} 

然后用它作为

echo my_date("M", $datetime); 
+0

非常感谢,我如何直接更改date()?我的问题是:我有一个网站有许多不同的日期输出,我需要更改输出并在本月后面添加点,我的问题是如何在全球范围内执行此操作。 – buckdanny

+0

就像我说的,你不能。这是一个核心的PHP函数,你不能改变它。这就是为什么你写自己的功能,并使用它。尽管如此,您可以使用适当的IDE将所有'date()'重构为'my_date()'。 – Qirel

0

这似乎有点锤子来破解一个螺母,或避免在这种情况下,IF语句,但你可以创建一个数组你如果你喜欢,用它输出不同的月份名称

$m_arr = [0,'Jan.','Feb.','Mar.','Apr.','May','Jun.', 
      'Jul.', 'Aug.', 'Sep.','Oct.','Nov.','Dec.']; 

$m = (int)date('n', $datetime); 

echo $m_arr[$m];