date (& quot; F & quot ;, strtotime (день-месяц-год)) выводит неверное значение для второго месяца года

Просто из любопытства кто-нибудь знает почему

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

будет распечатывать март, изначально я думал, что это обычная ошибка, но

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

распечатывает январь и

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

распечатывает марш, так что я не уверен, что на самом деле здесь происходит ???

есть идеи

0

Решение

Вы запускаете этот скрипт сегодня, так $day=30;?

Таким образом, если вы попытаетесь получить 30-й день февраля, он вернет вам 2-й день марта или 1 марта в високосные годы. Очевидно, потому что в феврале не хватает дней …

$day = 30;
$year = 2014;

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

Выход:

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

Это не ошибка, это особенность.

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;
?>

вот так!

0