私はこのPHPコードを持っています:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
しかし、December
ではなくAugust
を返しています。
$result["month"]
は8に等しいので、sprintf
関数は0
にするために08
を追加しています。
これを行うための推奨される方法:
今日では、日付/時刻の計算にはDateTimeオブジェクトを使うべきです。これにはPHP version> = 5.2が必要です。 Glavićの答え に示すように、あなたは以下を使うことができます。
$monthNum = 3;
$dateObj = DateTime::createFromFormat('!m', $monthNum);
$monthName = $dateObj->format('F'); // March
!
フォーマット文字 は、すべてを Unixエポック にリセットするために使用されます。 m
フォーマット文字は月の数値表現で、先行ゼロが付きます。
代替案:
古いPHPバージョンを使用していて、現時点ではアップグレードできない場合は、このソリューションを使用できます。 date()
関数の2番目のパラメータはタイムスタンプを受け入れます。そして、次のように作成するために mktime()
を使用できます。
$monthNum = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March
3文字の月名をMar
のようにしたい場合は、F
をM
に変更します。利用可能なすべてのフォーマットオプションのリストは PHPマニュアルドキュメント にあります。
みんながstrtotime()とdate()関数を使っているからといって、 DateTime の例を示します。
$dt = DateTime::createFromFormat('!m', $result['month']);
echo $dt->format('F');
mktime()
を使う:
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; // Output: May
?>
PHPマニュアルを参照してください。 http://php.net/mktime
strtotime
は標準の日付フォーマットを要求し、タイムスタンプを返します。
あなたは strtotime
から日付フォーマットを出力するために1桁を渡しているようです。
あなたはパラメータとして日付要素をとる mktime
を使うべきです。
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", mktime(null, null, null, $monthNum));
echo $monthName;
しかし、mktime関数は月数の先頭にゼロを必要としないため、最初の行はまったく不要で、$result["month"]
を直接関数に渡すことができます。
これをすべて1行にまとめて、日付をインラインで表示することができます。
echo date("F", mktime(null, null, null, $result["month"], 1));
...
現在のロケールに関して変換を行うには、strftime
関数を使用できます。
setlocale(LC_TIME, 'fr_FR.UTF-8');
$monthName = strftime('%B', mktime(0, 0, 0, $monthNumber));
date
はロケールを尊重しません、strftime
は尊重します。
年の初めから終わりまでの月名の配列がほしい場合は、ドロップダウン選択を作成するには、以下を使用します。
for ($i = 0; $i < 12; ++$i) {
$months[$m] = $m = date("F", strtotime("January +$i months"));
}
月番号がある場合は、最初にデフォルトの日付が1日で、デフォルトの年が現在の年である日付を作成してから、作成した日付から月の名前を抽出します。
echo date("F", strtotime(date("Y") ."-". $i ."-01"))
このコードでは、月番号が$ iに格納されていると仮定しています。
これが誰かに役立つことを願っています
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
私はこれを見つけた https://css-tricks.com/snippets/php/change-month-number-to-month-name/ そしてそれ完璧に働いた。
必要に応じて調整する
$m='08';
$months = array (1=>'Jan',2=>'Feb',3=>'Mar',4=>'Apr',5=>'May',6=>'Jun',7=>'Jul',8=>'Aug',9=>'Sep',10=>'Oct',11=>'Nov',12=>'Dec');
echo $months[(int)$m];
これは簡単なことですが、なぜそんなに多くの人々がそのような悪い提案をしているのでしょうか。 @Boraが一番近いですが、これが最も堅牢です
/***
* returns the month in words for a given month number
*/
date("F", strtotime(date("Y")."-".$month."-01"));
これはそれを行う方法です
現在、同じ問題に取り組むために以下の解決策を使用しています。
//set locale,
setlocale(LC_ALL,"US");
//set the date to be converted
$date = '2016-08-07';
//convert date to month name
$month_name = ucfirst(strftime("%B", strtotime($date)));
echo $month_name;
ロケール設定の詳細については、 http://php.net/manual/en/function.setlocale.php を参照してください。
Strftimeの詳細については、 http://php.net/manual/en/function.strftime.php を参照してください。
Ucfirst()
は文字列の最初の文字を大文字にするのに使われます。
date("F", strtotime($result["month"]))
上記のコードを使用
与えられた番号から月を印刷する方法はいくつかあります。ここにいくつかあります
1。 date()関数とパラメータ 'F'
コード例:
$month_num = 10;
echo date("F", mktime(0, 0, 0, $month_num, 10)); //output: October
2。 createFromFormat()を使用してphp日付オブジェクトを作成することにより
コード例
$dateObj = DateTime::createFromFormat('!m', $monthNum);
echo "month name: ".$dateObj->format('F'); // Output: October
3。 strtotime()関数
echo date("F", strtotime('00-'.$monthNum.'-01')); // Output: October
4。 mktime()関数
echo date("F", mktime(null, null, null, $monthNum)); // Output: October
5。 jdmonthname()を使用して
$jd=gregoriantojd($monthNum,10,2019);
echo jdmonthname($jd,0); // Output: Oct
strtotime
またはmktime
を使ってフィールドを設定する必要があります。
echo date("F", strtotime('00-'.$result["month"].'-01'));
mktime
は月だけを設定します。これを試してください。
echo date("F", mktime(0, 0, 0, $result["month"], 1));
たった1行
DateTime::createFromFormat('!m', $salary->month)->format('F'); //April
Cal_info()を使用するのが数値から文字列に変換する最も簡単な方法だと思います。
$monthNum = sprintf("%02s", $result["month"]); //Returns `08`
$monthName = cal_info(0); //Returns Gregorian (Western) calendar array
$monthName = $monthName[months][$monthNum];
echo $monthName; //Returns "August"
Cal_info()の ドキュメントを参照してください
つかいます:
$name = jdmonthname(gregoriantojd($monthNumber, 1, 1), CAL_MONTH_GREGORIAN_LONG);
これは、日時変換のすべてのニーズに対応します。
<?php
$newDate = new DateTime('2019-03-27 03:41:41');
echo $newDate->format('M d, Y, h:i:s a');
?>
pHP 7.1の場合
$monthyear= date("M Y");
月番号を指定して月名を取得するには
$ month_number = 5;
$ monthName = date( 'F'、mktime(0、0、0、$ month_number、10));
「F」は月の名前を返します。 「5月」
私はこの質問がしばらく前に尋ねられたことを知っています、しかし私はこの答えを探している誰もがおそらく単にif/else文全体を書き出すのを避けようとしていると考えました。この関数の唯一の注意点は、0から始まるインデックスではなく、月の実際の数字になることです。したがって、January = 1ではなく、0です。
function getMonthString($m){
if($m==1){
return "January";
}else if($m==2){
return "February";
}else if($m==3){
return "March";
}else if($m==4){
return "April";
}else if($m==5){
return "May";
}else if($m==6){
return "June";
}else if($m==7){
return "July";
}else if($m==8){
return "August";
}else if($m==9){
return "September";
}else if($m==10){
return "October";
}else if($m==11){
return "November";
}else if($m==12){
return "December";
}
}
SQLではmonthname()関数を使用することができます。
月名(date_column)によるテーブルグループからのSELECT月名(date_column)
これが私がやった方法です
// sets Asia/Calcutta time zone
date_default_timezone_set("Asia/Calcutta");
//fetches current date and time
$date = date("Y-m-d H:i:s");
$dateArray = date_parse_from_format('Y/m/d', $date);
$month = DateTime::createFromFormat('!m', $dateArray['month'])->format('F');
$dateString = $dateArray['day'] . " " . $month . " " . $dateArray['year'];
echo $dateString;
30 June 2019
を返します
<?php
$month =1;
$convert =DateTime::createFromFormat('!m', $month);
echo $convert->format('F');
?>