Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 第一个星期二_Php_Date - Fatal编程技术网

Php 第一个星期二

Php 第一个星期二,php,date,Php,Date,first_tube()函数应该返回一年中第一个星期二的日期,但在2011年的情况下,它返回的值尤其错误。如何修复代码,使其在所有情况下都能正常工作 function first_tuesday($year){ $first_january = mktime(0,0,0,1,1,$year); $day_week = date("w",$first_january ); $first_tuesday = $first_jan + ((2 - $day_week) % 7

first_tube()
函数应该返回一年中第一个星期二的日期,但在2011年的情况下,它返回的值尤其错误。如何修复代码,使其在所有情况下都能正常工作

function first_tuesday($year){

    $first_january = mktime(0,0,0,1,1,$year);
    $day_week = date("w",$first_january );
    $first_tuesday = $first_jan + ((2 - $day_week) % 7)* 86400;
    return date("d/m/Y",$first_tuesday);
}

strotime
足够聪明,可以满足您的需求:

function first_tuesday($year){
  return date('d/m/Y', strtotime("first Tuesday of January $year"));
}

这似乎对我有用:

<?php

$first_tuesday = new DateTime("first Tuesday of January 2011");
echo $first_tuesday->format('Y-m-d H:i:s');

?>

将其转换为功能形式:

<?php

/**
 * @return DateTime Returns a DateTime object representing the
 *                  first Tuesday of the year
 */
function first_tuesday($year){
    $first_tuesday = new DateTime("first Tuesday of January $year");
    return $first_tuesday;
}

?>

如果您只希望字符串采用您的格式,则:

<?php

/**
 * @return DateTime Returns a string representing the first
 *                  Tuesday of the year in the d/m/Y format
 */
function first_tuesday($year){
    $first_tuesday = new DateTime("first Tuesday of January $year");
    return $first_tuesday->format('d/m/Y');
}

?>

您可以在PHP手册中阅读有关该类的更多信息(该手册也有法语版本,因为根据原始问题,法语似乎是您的母语。)

请改用类:

function first_tuesday($year){
    $day = new DateTime(sprintf("First Tuesday of January %s", $year));
    return $day->format('d/m/Y');
}
用法:

echo first_tuesday(2011);
输出:

04/01/2011
简单:

function first_tuesday($year)
{
    return date("d/m/Y",strtotime('first Tuesday january '.$year));
}

无需使用对象,这是获得它的最快方法。

您能用英语写变量名吗?这样我们就更容易理解您要做什么?完成。请记住,如果您在此处找到了问题的解决方案,请单击其中一个答案旁边的复选标记接受答案。不,不是。在我的机器(PHP5.5.3)上,您的代码返回“07/01/2014”否,这是不正确的。您的函数将返回
07/01/2014
——但实际值是
04/01/2011
。但是07/01/2014是否正确?2014年。@AmalMurali你什么意思?@AmalMurali,太棒了!!让我给你买杯茶吧!:)哇,太棒了,它的性能
最快
——不相关。您使用DateTime不是因为它快,而是因为它更好。您可能是指函数中的
return
而不是
echo
。)@溜冰场。服务员。6:对。修好了,谢谢!顺便检查一下这个代码$exclus=数组(1,4);函数hasard(){$resultat=rand(1,10);返回$resultat;}echo“Nombre au hasard:”.hasard()。“\n”@用户3172273:这是一个不同的问题。请照此邮寄。点击按钮。确保你包含了所有相关的细节,并在你的问题中包含了预期的结果。另外,这个网站上的大多数用户都不会说话,所以我建议你用英语发布问题(和代码)。干杯+1对于正确的方法!
function first_tuesday($year)
{
    return date("d/m/Y",strtotime('first Tuesday january '.$year));
}