日期(“F”,strtotime(日 - 月 - 年))打印出一年中第二个月的错误值

时间:2014-09-30 17:51:27

标签: php datetime calendar strtotime

出于好奇,任何人都知道为什么

echo date("F", strToTime("$day-02-$year"));

将打印出三月,最初我认为这是一个常见的错误,但

echo date("F", strToTime("$day-01-$year"));

打印出1月和

echo date("F", strToTime("$day-03-$year"));

打印出游行,所以我不确定这里到底发生了什么???

任何想法

2 个答案:

答案 0 :(得分:0)

您今天运行此脚本,所以$day=30;

所以,如果你试图获得2月30日,那么它将在3月的第2天 - 或闰年的3月1日返回。显然是因为二月没有足够的日子......

$day = 30;
$year = 2014;

echo date("r", strToTime("$day-02-$year"));

输出:

Sun, 02 Mar 2014 00:00:00 +0100

这不是一个错误,它是一个功能。

答案 1 :(得分:0)

我的问题是把这一天默认为“j”我只是设置了默认值01,如果没有设置日期并且现在有效,

我有一个日历,我每个月都会用简单的按钮进行操作,并且在我的条件语句中没有设置日期我已经知道如果没有设置那一天我的默认值是小写字母j一改变了它以正确的名称回复,所以这个问题的答案是确保如果没有一天存在,例如当你每个月去一个月时,默认日期设置为1

<?php 

        if (isSet($_GET['day'])) {
            $day = $_GET['day'];
        } else {
            $day = date("01");
        }

        if (isSet($_GET['month'])) {
            $month = $_GET['month'];
        } else {
            $month = date("n");
        }

        if (isSet($_GET['year'])){
            $year = $_GET['year'];
        } else {
            $year = date("Y");
        }

        //calendar variable
        $currentTimeStamp = strToTime("$day-$month-$year");         
        //get current month name
        $monthName = date("F", $currentTimeStamp);          
        //get how many days are in the current month
        $numDays = date("t", $currentTimeStamp);            
        //counter for calendar cells in loop
        $counter = 0;       
    ?>
像这样!