0

我有一个日历,其中包含用户从安装开始日期输入的事件。这些事件总是从开始日期开始重复,每隔 X 天、几个月或几年,我们不知道结束日期。我需要找到以 unix 时间戳格式发生的下一个事件。我试图找出内置的 PHP DateInterval 类,但我不知道如何在没有已知结束日期的情况下。

这是我到目前为止所拥有的

/* User Input */
$installdate="315558000";// 1st Jan 1980 
$Every = 1; // Could be 1 =>  
$DateOption = 'Months'; // Could be 'Days' 'Months' or 'Years'

#Possible user selections 
$DateJustify = array('Days'=>j,'Months'=>n,'Years'=>Y);

#Getting the next service date into printed variables for mktime
foreach($DateJustify as $keyDate => $dt ){
${$keyDate}=date($dt,$installdate);
if($DateOption == $keyDate )
${$keyDate} += $Every; 
}

这将返回所有适合使用 mktime 时间戳的内容,但它只是给出了安装日期的下一个日期。由于安装日期从一天开始,最终秒、分钟或小时都无关紧要

4

1 回答 1

0

使用DateTime类将字符串转换为时间。第二个参数接受时区,使用DateTimeZone

$z = new DateTimeZone("Europe/Berlin");
$d = new DateTime("next wed +3 day", $z);
echo $d->format("d.m.Y H:i");
echo $d->format("U"); # or echo $d->getTimestamp(); on PHP > 5.3.0

DateTime::format()方法接受类似于date()函数的格式。

于 2013-03-15T00:01:17.827 回答