web-dev-qa-db-ja.com

月を名前から数字に変換する

_$month = "July";_を変更して、_$nmonth = 7_(_07_も問題ないようにする)を簡単に変更する方法はありますか。 caseステートメントを実行できますが、変換する関数は既にありますか?編集:私は複数の答えを受け入れることができればいいのに、あなたの2人は基本的に私があなたの力を合わせて必要なものをくれたのです。

_$nmonth = date('m',strtotime($month));
_

これにより、_$month_の数値が得られます。ありがとう!

47
aslum

はい、

$date = 'July 25 2010';
echo date('d/m/Y', strtotime($date));

mは、月をその数値表現にフォーマットします。

62
Sarfraz

これを試して:

<?php
  $date = date_parse('July');
  var_dump($date['month']);
?>
71
Matthew

ここで興味深い外観、ケリーによって与えられたコードはうまく機能し、

$nmonth = date("m", strtotime($month));

ただし、2月の場合、現在の日がうるう年が30または31で、うるう年が29,30,31でない場合、期待どおりに動作しません。3を返します月番号として。例:

$nmonth = date("m", strtotime("february"));

解決策は、次のように月に年を追加することです。

$nmonth = date("m", strtotime("february-2012"));

これは、PHPマニュアルの comment から取得しました。

18
VKGS
_$string = "July";
echo $month_number = date("n",strtotime($string));
_

'7' [月番号]を返します

出力「08」にdate("m",strtotime($string));を使用します

その他の形式については、これを参照してください。
http://php.net/manual/en/function.date.php

11

これも使用できます:

$month = $monthname = date("M", strtotime($month));
5
lokeshpahal
$monthname = date("F", strtotime($month));

Fは完全な月名を意味します

4
Ranjith Siji
$nmonth = date("m", strtotime($month));
3
Kelly Copley

日付関数を使用できるように、偽の日付を作成するのが最も簡単な場合があります。

ここでの優れたリファレンス: http://php.net/manual/en/function.date.php

例:

<?
$month = 7;

$tempDate = mktime(0, 0, 0, $month, 1, 1900); 

echo date("m",$tempDate);


?>
2
Ben Guthrie
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>
2
Nikos Tsirakis

上記の答えは良いです。別の方法があります:-

function getMonthNumber($monthStr) {
//e.g, $month='Jan' or 'January' or 'JAN' or 'JANUARY' or 'january' or 'jan'
$m = ucfirst(strtolower(trim($monthStr)));
switch ($m) {
    case "January":        
    case "Jan":
        $m = "01";
        break;
    case "Febuary":
    case "Feb":
        $m = "02";
        break;
    case "March":
    case "Mar":
        $m = "03";
        break;
    case "April":
    case "Apr":
        $m = "04";
        break;
    case "May":
        $m = "05";
        break;
    case "June":
    case "Jun":
        $m = "06";
        break;
    case "July":        
    case "Jul":
        $m = "07";
        break;
    case "August":
    case "Aug":
        $m = "08";
        break;
    case "September":
    case "Sep":
        $m = "09";
        break;
    case "October":
    case "Oct":
        $m = "10";
        break;
    case "November":
    case "Nov":
        $m = "11";
        break;
    case "December":
    case "Dec":
        $m = "12";
        break;
    default:
        $m = false;
        break;
}
return $m;
}
2
vineet

つかいます

date("F", mktime(0, 0, 0, ($month)));

where, $month value will be 1 -> 12
1
PHP Ferrari

strtotime() および date() ?と組み合わせて使用​​することもできます

1
robertbasic

PHP 5.4を使用すると、マシューの答えを1行に変換できます。

$date = sprintf('%d-%d-01', $year, date_parse('may')['month']);
0
Mike Purcell
$date = 'Dec 25 2099';
echo date('d/m/Y', strtotime($date));

これは01/01/1970を返します。これは、PHPがすべての日付をサポートしていないことを意味し、Jan 19 2038まで正しいフォーマットの日付を返しますが、Jan 20 203801/01/1970を返します

0
Haneefa
$dt = '2017-Jan-10';
         OR
$dt = '2017-January-10';

echo date( 'Y-m-d'、strtotime($ dt));

echo date( 'Y/m/d'、strtotime($ dt));

0
Mohammad
$month = 'August';
$year = 2019;
echo date('m',strtotime($month.' '.$year));

31を与える

0
Vipin Choubey