문제

PHP 스크립트를 사용하여 웹 사이트에서 MySQL 데이터베이스에서 특정 방식으로 형식화 된 정보를 표시하고 있습니다. 데이터베이스의 날짜 값 (YYYY-MM-DD로 형식화 됨)이 Month Yyyy로 표시되기를 원합니다. 단어가 아래에있는 것처럼 몇 달을 표시하는 데 사용하고있는 효율적인 코드는 다음과 같이 사용합니다.

foreach($monthstart as $monthnext)
    {
    preg_match("/[[0-9][0-9]]*/", $monthnext, $startmonthfull);
    }
echo "<b>Duration: </b>";
foreach($startmonthfull as $which)
{
   if($which == 01)
{
echo "January ";
}
elseif($which == 02)
{
echo "February ";
}
elseif($which == 03)
{
echo "March ";
}
elseif($which == 04)
{
echo "April ";
}
elseif($which == 05)
{
  echo "May ";
}
elseif($which == 06)
{
  echo "June ";
}
elseif($which == 07)
{
  echo "July ";
}
elseif($which == 08)
{
  echo "August ";
}
elseif($which == 09)
{
  echo  "September ";
}
elseif($which == 10)
{
  echo "October ";
}
elseif($which == 11)
{
  echo "November ";
}
elseif($which == 12)
{
  echo "December ";
}
}
foreach($year as $printyear)
{
  echo $printyear;
}

이 코드는 첫 번째 부분의 월과 연도를 표시합니다. 월이 8 월 또는 9 월이 아닌 한 웹 페이지에 완벽하게 표시됩니다. 월이 8 월 또는 9 월이라면 해당 부분에 대해 아무것도 인쇄되지 않으므로 "2005 년 8 월"대신) "2005"를 얻을 수 있습니다.

8 월과 9 월 elseif 문장은 다른 사람들과 정확히 동일한 형식 (내가 말할 수있는 것)이므로 왜 이러한 값이 인쇄되지 않는지 모릅니다. 단순히 $ 값을 인쇄하도록 요청하면 08 또는 09로 인쇄하면 값이 데이터베이스에서 적절하게 보입니다. 나는이 문제로 꽤 오랫동안 벽에 머리를 두드리기 때문에 누군가가 빨리 지적 할 것이라는 간과하는 단순한 것이 있기를 정말로 바라고 있습니다.

(차이가 있는지 확실하지 않지만 Joomla의 Jumi 플러그인을 사용하여 사용자가 Woomla 페이지에 사용자 정의 코드를 추가하여 웹 사이트 의이 섹션을 개발할 수 있습니다.)

편집 : 08과 09에서 0을 제거했는데 이제 모두 제대로 표시됩니다. 그래서 나는 추측한다 이제 문제는 값이 08과 09 일 때 왜 문제가 문제를 해결 했습니까?

또한 질문을 게시 한 후 곧 해결해 주셔서 죄송합니다.

도움이 되었습니까?

해결책

예, 당신은 당신의 조건에서 선행 0을 지우려면 php가 그것을 옥탈로 해석하고, 더 나은 방법으로 코딩해야합니다.

foreach($monthstart as $monthnext){
    preg_match("/[[0-9][0-9]]*/", $monthnext, $startmonthfull);
}
echo "<b>Duration: </b>";
$monthArray = array(
1 => 'January',
2 => 'February',
3 => 'March',
4 => 'April',
5 => 'May',
6 => 'June',
7 => 'July',
8 => 'August',
9 => 'September',
10 => 'October',
11 => 'November',
12 => 'December');

foreach($startmonthfull as $which){
 echo($monthArray[$which] . " ");
}
foreach($year as $printyear)
{
  echo $printyear;
}

다른 팁

당신은 Joomla를 사용하고 있습니다! 1.5, 맞습니까? 왜 Joomla에게 보내지 않습니까! 그 일을하십시오 :

if (!defined('MY_DATE_FORMAT'))
   define('MY_DATE_FORMAT', '%B %Y');
jimport('joomla.utilities.date');

$mysql_date = '2009-08-01';

$jdate = new JDate($mysql_date);
echo $jdate->toFormat(JText::_(MY_DATE_FORMAT));

부수적 인 혜택으로, 그는 웹 사이트를 번역하기로 선택한 경우 달을 올바른/중고 언어로 번역 할 것입니다.

MySQL이 날짜를 형식화하십시오 날짜 형식 원하는 방식으로 PHP로 반환하십시오. 이런 식으로 PHP로 조작 할 필요는 없습니다.

다음은 mysql에 만들 수있는 예제입니다.

select date_format(date_column, '%M %Y') as formatted_date from table;

어디에:

  • date_column은 포맷하려는 날짜를 저장하는 원래 테이블 열입니다.
  • %m은 월 이름이 전체 ( '1 월', '2 월', '3 월'등)로 철자를 원한다는 것을 의미합니다.
  • %y는 4 자리 연도를 원한다는 것을 의미합니다.

'2009-09-17'의 가치를 가진 date_column의 필드는 '2009 년 9 월'으로 돌아갑니다.

예를 들어, 다음 출력은 원본을 표시합니다 date_column 함께 값 date_format() 값 :

+-------------+----------------+
| date_column | formatted_date |
+-------------+----------------+
| 2009-09-11  | September 2009 |
| 2009-09-02  | September 2009 |
| 2009-09-01  | September 2009 |
| 2009-08-31  | August 2009    |
| 2009-08-04  | August 2009    |
| 2009-08-01  | August 2009    |
| 2009-07-11  | July 2009      |
| 2009-07-01  | July 2009      |
| 2009-06-30  | June 2009      |
| 2009-06-20  | June 2009      |
| 2009-06-09  | June 2009      |
| 2009-05-26  | May 2009       |
| 2009-05-09  | May 2009       |
| 2009-05-08  | May 2009       |
| 2009-04-22  | April 2009     |
| 2009-04-20  | April 2009     |
| 2009-04-19  | April 2009     |
| 2009-03-05  | March 2009     |
| 2009-03-04  | March 2009     |
| 2009-03-03  | March 2009     |
+-------------+----------------+

0으로 시작하는 PHP의 숫자는 8 월을 고려합니다. 이것이 이유가 될 수 있습니다. 그들 주위에 ""를 넣으십시오.

그러나 귀하의 질문에 대한 의견의 링크를 읽으십시오. 이것은 반란 방지로 간주됩니다.

이 방법은 모든 지역에서 작동하도록 보장하고 오래 전에 오래 전에 쓰여진 물건을 사용합니다.

mysql :

select UNIX_TIMESTAMP(time) as unixtime from table;

PHP :

$formatted_time = date('F Y', $row['unixtime']);

또한 $ row [ 'unixtime'] 변수를 재사용 할 수 있으므로 동일한 스크립트에서 MySQL을 다시 호출하지 않고 다른 방법을 형식화하거나 재사용 할 수 있습니다. 상수 또는 일부 사용자 구성 가능한 옵션에서 날짜 함수에 이르기까지 다른 문자열을 제공 할 수도 있습니다.

PHP에는 몇 가지 기능이 있습니다 (및 PHP 5.3 기준 날짜 시간 타입) 시간과 날짜를 다루기 위해.

예를 들어, php 5.x에서 :

$mytime = strtotime($monthstart);
// $output_date = date("F Y", $mytime);
$output_date = strftime("%B %Y", $mytime);

(Strftime은 일반적으로 프로그래밍 언어에서 휴대용이기 때문에 포함됩니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top