PHPにて指定した期間内のランダムな日付をn件生成し、日付順にソートした上で受け取る方法
PHPにて指定した期間内のランダムな日付を指定した数だけ生成し、さらに日付順にソートして配列で受け取りたいというケースがあった。以下に対応方法をメモ。
対応方法
ソースコード
<?php
//開始日と終了日設定
$start = new Datetime('2024-01-01');
$end = new Datetime('2024-12-31');
//何件作成するか設定
$min = 0;
$max = 5;
$date_list = array();
while( $min < $max ){
//指定した期間内のランダムなタイムスタンプを取得
$timestamp = mt_rand($start->format('U'), $end->format('U'));
$date = new Datetime();
$date = $date->setTimestamp($timestamp)->setTimezone(new DateTimeZone('Asia/Tokyo'))->format('Y-m-d');
if( !in_array($date, $date_list) ){
$date_list[] = $date;
$min++;
}
}
//日付順にソート
array_multisort(array_map('strtotime', $date_list ), SORT_ASC, $date_list);
var_dump($date_list);
出力例
上記ソースコードを実行した際の出力例は以下の通り。
array(5) {
[0]=>
string(10) "2024-03-06"
[1]=>
string(10) "2024-07-22"
[2]=>
string(10) "2024-09-26"
[3]=>
string(10) "2024-11-15"
[4]=>
string(10) "2024-12-11"
}
関連記事
-
-
PHPで外部のAPIにリクエストする際に並列処理(非同期実行)する方法
あるシステムからPHPで外部のAPIにリクエストしたかった。ただ、複数回リクエス ...
-
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...
-
-
Codeigniter3で異なるデータベースを使用する
Codeigniterで2つのコンテンツがあって、それぞれ別のデータベースを使用 ...
-
-
PHPでパーミッションの変更
chmodというみたことが無いPHP関数があったのでメモ。 ■参考サイト htt ...
-
-
PHPで日時のフォーマットをISO 8601型とDateTime型を相互に変換する方法
他社のAPI等のレスポンスで日時部分が「YYYY-MM-DDTHH:II:SSZ ...