これは実際にはこの質問からのフォローアップの質問ですが、まったく別の問題を提示しています。また、かなり紛らわしいことも承知していますので、ご容赦ください。
私は次のような日付を持っています1/04/2013
:Jan 04 2013
前述の質問では、時刻形式に時間と分をランダムに追加する必要がありましたが、それは本来の目的で機能します。
$clr_datenew = date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime($date));
これは次のようなものを生成しました: 2013-05-01 08:57:00
問題は、システムがその日付を..MAY 1st
ではなくJAN 05
..と見なすことです。
これらの投稿を自動的に挿入すると(wp)-日付が次のようなすべての投稿が2012-05-28
DBに挿入されます1970-01-01
(これはphpのデフォルトの「間違った日付」形式であると思います..28月はもちろんエラーです. . )
から日月を変更しようとしました
$clr_datenew = date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime($date));
に
$clr_datenew = date('Y-d-m ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime($date));
ただし、日付の組み合わせが異なると同じエラーが発生します。
同僚が私に次のヒントをくれた後:
strtotime は、z が 4 桁か 2 かによって、x/y/z を mm/dd/yy[yy] と解釈し、xyz を dd-mm-yyyy または yy-mm-dd と解釈します。
私も試しました:
date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime(str_replace('/','-',$clr_date)));
私はここで本当に頭がおかしくなっています:-)
これは、関数が大まかに「人間の」形式に基づいて時間をフォーマットする方法を実際に「推測」する strtotime() を使用しているためだと思います。
元の日付形式と必要な変換形式の両方を指定しながら、日付をある日付から別の日付に変換する機能はありますか??
dummy_function($origformat,$wantedformat)
指定できる場所のようなものdummy_function('Y-d-m','Y-m-d')
EDIT I @harkeのコメントを読んだ後、何かが私にトリガーされ、それを@Maks3wの回答と組み合わせると、私のために機能している形式は次のようになります。
$clr_datenew = date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime(str_replace('/','-',$clr_date)));
その特定の会社の(内部)サーバーがより低いバージョンを実行しているため、Php 5.3 +メソッドは私にはあまり関係がないため、確認できませんでした..
DB デザイナー/プログラマーのすべての掲示板に投稿する必要がある少し余分なもの: http://xkcd.com/1179/
つまり、追って通知があるまで:-)