5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テストデータ用にランダムな日付文字列をn個生成する

Last updated at Posted at 2016-04-15

がいよう

  • 先日チャットで「テストデータ用に使うランダムな日付(文字列)を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()
}
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?