1

これが繰り返しの場合は申し訳ありませんが、役に立たない答えを探しました。

デートがあります。これは、文字列に変換したオブジェクトです。

$exp = (string)$date;

この変数は次のように表示されます。10/2013

しかし、次のコードを使用して、mm/yyyy 形式を mmyy に変換しようとすると:

$ex = date($exp);
$e = date('m Y',$ex);

...次のエラー通知が表示されるだけではありません。

Notice: A non well formed numeric value encountered in ...

...しかし、私の日付も次のように変更されます: 1269(1969 年 12 月のように [え?])

私は何を間違っていますか?

-ボブ

4

5 に答える 5

4
$date = substr_replace($date,' ',2,3);

なぜそんな奇妙なフォーマットが必要なのかわからない

于 2012-05-03T15:11:38.803 に答える
3

このdate()関数は、2 番目のパラメーターとして Unix タイムスタンプを受け入れます。数字として認識されない場合は、0(1969 年 12 月 31 日というエポックを示す) として扱われる可能性があります。タイムスタンプを作成するには、あなたが意味したと思います

$ex = strtotime($exp);

それ以外の

$ex = date($exp);

ただし、それでも、「2013 年 10 月」は では受け入れられない日付形式ですstrtotime()

次のように、古い日付形式からタイムスタンプを作成できます。

$exp = '10/2013';
$date = explode('/', $exp);
$ex = mktime(0, 0, 0, $date[0], 1, $date[1]);
$e = date('m Y',$ex);
于 2012-05-03T15:06:44.383 に答える
1

のように不完全な日付から始めて、10/2013それを取得するには文字列操作を行う必要がありますmmyy。タイムスタンプ出力が実際に必要ない場合は、それを日付オブジェクトやタイムスタンプに変換する必要はまったくありません。文字列操作を行うだけです。

list($month, $year) = explode("/", $date);
$newdate = $month . substr($year, 2);
// 1013

編集 (コメントから) : 月が常に 2 桁であるとは限らないが、出力に 2 桁の月が必要な場合は、次を使用します。

$newdate = str_pad($month, 2, "0", STR_PAD_LEFT) . substr($year, 2);
于 2012-05-03T15:06:04.330 に答える
0

$exp = date("my");

wheremyは「月」「年」を意味します。

于 2012-05-03T15:15:43.310 に答える
0

$date フィールドを直接変換できるはずです。

 $e = date('m/Y', strtotime($date));

そうでない場合、これは機能するはずです

 $e = date('m/Y', strtotime(((string)$date)));
于 2012-05-03T15:11:14.890 に答える