我編碼的應用程序,我需要分配兩個固定的時間戳如何使用php在兩個日期之間生成隨機數據?
我怎樣才能做到這一點使用PHP我搜索第一但只找到Java的答案不是PHP
例如之間的隨機日期:
$string = randomdate(1262055681,1262055681);
我編碼的應用程序,我需要分配兩個固定的時間戳如何使用php在兩個日期之間生成隨機數據?
我怎樣才能做到這一點使用PHP我搜索第一但只找到Java的答案不是PHP
例如之間的隨機日期:
$string = randomdate(1262055681,1262055681);
你可以只使用一個隨機數確定一個隨機日期。獲取0和日期之間的天數之間的隨機數。然後只需將該號碼添加到第一個日期。
例如,從現在開始到30天之間的某個日期爲一個隨機數。
echo date('Y-m-d', strtotime('+'.mt_rand(0,30).' days'));
這樣一個很酷的小函數「黑客」!非常好... – krembo99 2012-07-04 07:22:44
再舉一例:
$datestart = strtotime('2009-12-10');//you can change it to your timestamp;
$dateend = strtotime('2009-12-31');//you can change it to your timestamp;
$daystep = 86400;
$datebetween = abs(($dateend - $datestart)/$daystep);
$randomday = rand(0, $datebetween);
echo "\$randomday: $randomday\n";
echo date("Y-m-d", $datestart + ($randomday * $daystep)) . "\n";
如果給定日期在日期時間格式,然後利用這樣做是爲了兩個數字轉換爲時間戳的這種最簡單的方法,然後將這些作爲最小和最大一個隨機數發生器的邊界。
一個快速的PHP的例子是:
// Find a randomDate between $start_date and $end_date
function randomDate($start_date, $end_date)
{
// Convert to timetamps
$min = strtotime($start_date);
$max = strtotime($end_date);
// Generate random number using above bounds
$val = rand($min, $max);
// Convert back to desired date format
return date('Y-m-d H:i:s', $val);
}
此功能利用了strtotime()通過zombat所建議的日期時間描述轉換爲Unix時間戳和日期()作出有效日期出來的隨機時間戳已經生成。
使用PHP的日期時間的另一個解決方案
$start_date
和$end_date
是datetime對象所有的
private static function random_date_in_range($start_date, $end_date) {
$new_date_timestamp = mt_rand($start_date->getTimestamp(), $end_date->getTimestamp());
$random_date = new DateTime();
$random_date->setTimestamp($new_date_timestamp);
return $random_date;
}
我們應該全部移到'DateTime'而不是'date()' - 函數。這就是說,這是最好的解決方案。 – Hafenkranich 2016-08-16 17:54:59
簡單地說,這個小功能對我的作品 我寫的一個輔助類datetime
爲靜態方法
/**
* Return date between two dates
*
* @param String $startDate
* @param String $endDate
* @return String
*
* @author Kuldeep Dangi <[email protected]>
*/
public static function getRandomDateTime($startDate, $endDate)
{
$randomTime = mt_rand(strtotime($startDate), strtotime($endDate));
return date(self::DATETIME_FORMAT_MYSQL, $randomTime);
}
$yeni_tarih = date('Y-m-d', strtotime('+'.mt_rand(-90,0).' days'))." ".date('H', strtotime('+'.mt_rand(0,24).' hours')).":".rand(1,59).":".rand(1,59);
完全隨機的日期和時間
的最佳方式:
$timestamp = rand(strtotime("Jan 01 2015"), strtotime("Nov 01 2016"));
$random_Date = date("d.m.Y", $timestamp);
量之間Ø f strtotime
在這裏是太高了。
對於任何人的利益跨越1971年之前和2038年之後,這裏是一個現代化的,靈活的解決方案:
function random_date_in_range($date1, $date2){
if (!is_a($date1, 'DateTime')) {
$date1 = new DateTime((ctype_digit((string)$date1) ? '@' : '') . $date1);
$date2 = new DateTime((ctype_digit((string)$date2) ? '@' : '') . $date2);
}
$random_u = random_int($date1->format('U'), $date2->format('U'));
$random_date = new DateTime();
$random_date->setTimestamp($random_u);
return $random_date->format('Y-m-d') .'<br>';
}
叫它任何方式......
// timestamps
echo random_date_in_range(157766400,1489686923);
// any date string
echo random_date_in_range('1492-01-01','2050-01-01');
// English textual parsing
echo random_date_in_range('last Sunday','now');
// DateTime object
$date1 = new DateTime('1000 years ago');
$date2 = new DateTime('now + 10 months');
echo random_date_in_range($date1, $date2);
由於是,該功能需要date1
< = date2
。
很好的問題;需要爲應用程序生成一些隨機樣本數據。
您可以使用following function與可選參數生成隨機日期:
function randomDate($startDate, $endDate, $format = "Y-M-d H:i:s", $timezone = "gmt", $mode = "debug")
{
return $result;
}
樣本輸入:
echo 'UTC: ' . randomDate("1942-01-19", "2016-06-03", "Y-M-d H:i:s", "utc") . '<br>';
//1942-Jan-19 07:00:00
echo 'GMT: ' . randomDate("1942-01-19", "2016-06-03", "Y/M/d H:i A", "gmt") . '<br>';
//1942/Jan/19 00:00 AM
echo 'France: ' . randomDate("1942-01-19", "2016-06-03", "Y F", "Europe/Paris") . '<br>';
//1942 January
echo 'UTC - 4 offset time only: ' . randomDate("1942-01-19", "2016-06-03", "H:i:s", -4) . '<br>';
//20:00:00
echo 'GMT +2 offset: ' . randomDate("1942-01-19", "2016-06-03", "Y-M-d H:i:s", 2) . '<br>';
//1942-Jan-19 02:00:00
echo 'No Options: ' . randomDate("1942-01-19", "2016-06-03") . '<br>';
//1942-Jan-19 00:00:00
讀者的要求可能會有所不同,從應用到另一個,一般希望這個函數是一個方便的工具,您需要爲您的應用程序生成一些隨機日期/樣本數據。
請注意該功能最初處於調試模式,所以將其更改爲$mood=""
除調試生產外。
該函數接受:
輸出不調試模式是根據可選規範的隨機數。
使用PHP 7.x測試
難道是我還是限制相同? :) – PJunior 2015-03-31 16:12:18
截至2016 @Sam的答案應該是公認的答案,因爲我們都應該轉向'DateTime'而不是'date'-函數。 – Hafenkranich 2016-08-16 17:58:18
-1:兩個估算的時間戳相等嗎?你不會隨意的! +1因爲它是一個很好的問題。 – wpcoder 2017-10-16 12:36:52