2010-03-15 47 views
0

我需要生成递增日期的字符串,是这样的:生成递增日期字符串

(year, month, day, hour, minute) 
2010, 2, 12, 11, 30 
2010, 2, 12, 11, 31 
etc 

什么是这样做的最佳方式?我可能想要生成多达1000行,像这样

回答

4

可以使用date classes(注:DateInterval和DatePeriod只可用于PHP 5.3),使生活更轻松。

$start = new DateTime('2010-02-12 11:30', new DateTimeZone('UTC')); 
$interval = new DateInterval('PT1M'); // 1 minute interval 
$period = new DatePeriod($start, $interval, 100); // Run 100 times 

foreach ($period as $datetime) { 
    // Output like: 2009, 02, 12, 11, 30 
    echo $datetime->format("Y, m, d, H, i") . PHP_EOL; 
} 

一个不太漂亮,但在老版本的PHP,替代后来看到其他建议推荐mktime可用。

2

我建议检查一下PHP的内置函数:datemktime。 一起使用,你可以达到你想要的东西。

举个例子,以增加直接在网站上所采取的一天。

<?php 
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y")); 
?> 
1
<?PHP 
    for ($i = 0; $i < 1000; $i++) { 
     $startTimeSec = mktime(11, 30 + $i, 0, 2, 12, 2010); 
     echo date("Y, m, d, h, i", $startTimeSec) . "\n" . '<br />'; 
    } 
?> 
1
for($i=1;$i<=10;$i++){ 
$tomorrow = mktime(0,0,0,date("m"),date("d")+$i,date("Y")); 
echo "Tomorrow is ".date("Y m d", $tomorrow);  
} 
1

最简单的是在我脑海中与PHP < 5.3

echo '(year, month, day, hour, minute)', PHP_EOL; 
for($i = 0; $i < 1000; $i++) { 
    echo date('Y, m, d, H, i', strtotime("+$i minute")), PHP_EOL; 
}