PHP 内部の date() 関数の条件付き変換を作成しようとしています。このテストに基づいて、異なる文字列が PHP 関数の残りの部分に入力されるように、内部変数 (date('M')、date('y') など) を何らかの方法で再定義することは可能ですか。
if (ICL_LANGUAGE_CODE == 'fr') { }
以下は、dates モジュールに使用しているコードの動作例です。$date
この定義には多くの変数が含まれているdate()
ため、各キー内で変数を 100 回以上再定義しなくても済むように、PHP の first 内で条件付きで変数を再定義することが重要です。
if($start <= $end):
if($start == $end):
//Month Day, Year
$date = date('F', $start).' '.date('j',$start).', '.date('Y', $start);
else:
if($start_year == $end_year):
if($start_month == $end_month):
//Month Day - Day, Year
$date = date('F', $start).' '.date('j',$start).' - '.date('j', $end).', '.date('Y', $start);
else:
//Month Day - Month Day, Year
$date = date('F', $start).' '.date('j',$start).' - '.date('F', $end).' '.date('j', $end).', '.date('Y', $start);
endif;
else:
//Month Day, Year - Month Day, Year
$date = date('F', $start).' '.date('j',$start).', '.date('Y', $start).' - '.date('F', $end).' '.date('j', $end).', '.date('Y', $end);
endif;
endif;
endif;
ベストアンサー1
ロケールに基づいて日付/時刻スタンプを操作する必要があるときは、strftime:
switch ($lang) {
case 'en':
setlocale(LC_TIME, 'en_CA.UTF-8');
echo strftime("%B %e, %G");
break;
case 'fr':
setlocale(LC_TIME, 'fr_CA.UTF-8');
echo strftime("%e %B %G");
break;
}
結果:
February 11, 2011 // en
11 février 2011 // fr
もちろん、システムにロケールをインストールする必要があります。Ubuntu の場合の例:
bash-4.1$ sudo locale-gen fr_CA.UTF-8
2022年5月に編集
strftime()
PHP 8.1.0 以降は非推奨となりました
次のように実行します。
$fmt = datefmt_create(
'pt_BR', // The output language.
pattern: "cccc, d 'de' LLLL 'de' YYYY" // The output formatting.
);
$input = strtotime(date('d-m-Y'));
$output = datefmt_format($fmt, $input);
var_dump($output); // Outputs "segunda-feira, 20 de junho de 2022".
使用に関してはstrtotime()
:
- アメリカの M/D/Y 形式の場合はスラッシュ (/)。
- ヨーロッパDMYフォーマットの場合はダッシュ(-)
- ISO YMD 形式のピリオド (.)。
私のサンプルでは、ヨーロッパの日-月-年の形式を使用しています。
ここをクリック$pattern
パラメータの値をどのようにフォーマットするかを確認しますdatefmt_create()
。
intl パッケージがインストールされている必要があります:
$ sudo apt install php8.1-intl
8.1
作業している PHP バージョンに合わせてビットを変更します。