がいよう
- 先日チャットで「テストデータ用に使うランダムな日付(文字列)をn個作りたい」って流れてきたのでその時に書いたコードを晒しつつ+αしてみる
仕様
- コマンドラインから実行する
- n個の日付文字列を改行コードで分割して標準出力する
- 幅はintの0から最大値まで
- 文字列さえ出力すればいいのでtimezoneはUTC+0固定
- コマンドライン引数1:生成する数
- コマンドライン引数2:日付フォーマット
実装
<?php
date_default_timezone_set('UTC');
$start = strtotime('1970-01-01 00:00:00'); // 0
$end = strtotime('2038-01-19 03:14:07'); // 2147483647
for ($i = 0;$i < $argv[1];$i++) {
echo date($argv[2], mt_rand($start, $end)) . PHP_EOL;
}
Datetime
DatePeriodで実現しようとして諦めた
おまけ
golangでもやってみた(100個、YY-MM-DD HH:II:SS固定)
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
date_format := "2006-01-02 15:04:05"
rand.Seed(time.Now().UnixNano())
for i := 0; i < 100; i++ {
wg.Add(1)
go func() {
defer wg.Done()
unixtime := rand.Int63n(2147483647)
fmt.Println(time.Unix(unixtime, 0).Format(date_format))
}()
}
wg.Wait()
}