我的项目有问题。我想创建一个.ics
文件,其开始和结束时间由网站用户定义。所以我得到了一个开始和结束年份以及开始/结束时间的字符串。现在我想从这些数据创建一个DateTime
对象。我的问题是我只是从现在获取时间戳,而不是从创建的字符串中获取时间戳:
$eventStartDay = $_POST["eventStartDay"];
$eventStartMonth = $_POST["eventStartMonth"];
$eventStartYear = $_POST["eventStartYear"];
$eventStartHour = $_POST["eventStartHour"];
$eventStartMinute = $_POST["eventStartMinute"];
$eventStartSecond = $_POST["eventStartSecond"];
$startDateTime = $eventStartYear . "-" . $eventStartMonth . "-"
. $eventStartDay . "T" . $eventStartHour . ":"
. $eventStartMinute . ":" . $eventStartSecond . "+01:00";
$eventEndDay = $_POST["eventEndDay"];
$eventEndMonth = $_POST["eventEndMonth"];
$eventEndYear = $_POST["eventEndYear"];
$eventEndHour = $_POST["eventEndHour"];
$eventEndMinute = $_POST["eventEndMinute"];
$eventEndSecond = $_POST["eventStartSecond"];
$endDateTime = $eventEndYear . "-" . $eventEndMonth . "-"
. $eventEndDay . "T" . $eventEndHour . ":"
. $eventEndMinute . ":" . $eventEndSecond . "+01:00";
$cal = new SimpleICS();
$cal->addEvent(function($e) {
$e->startDate = new DateTime($startDateTime);
$e->endDate = new DateTime($endDateTime);
我用 var_dump() 检查了字符串,得到了正确的答案。它们应如下所示:"2016-01-18T19:00:00+01:00"
引用关于匿名函数的PHP手册:
闭包也可以从父作用域继承变量。任何此类变量都必须传递给 use 语言构造。
所以你需要关闭日期时间对象,例如你需要做
$cal->addEvent(function($e) use ($startDateTime, $endDateTime) {
$e->startDate = new DateTime($startDateTime);
$e->endDate = new DateTime($endDateTime);
}