我正在使用DatePicker, FullCalendar和MySQL的组合。
DatePicker初始化<script type='text/javascript'>
$(document).ready(function() {
$('#dp1').datepicker({
autoclose: true,
format: "yyyy-mm-dd"
});
});
</script>
FullCalendar初始化<script type='text/javascript'>
$(document).ready(function() {
$('#calendar').fullCalendar({
eventSources: [
{
url: 'data.php',
type: 'POST'
}
]
})
});
</script>
FullCalendar事件源'data.php'
<?php
$dbh = new PDO('mysql:host=localhost;dbname=calendar', 'user', 'pass');
$stmt = $dbh->prepare("SELECT * FROM bookings");
$stmt->execute();
$return_array = array();
$event_array;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$event_array = array();
$event_array['id'] = $row['id'];
$event_array['title'] = $row['forename'] . " " . $row['surname'];
$event_array['start'] = $row['start'];
$event_array['end'] = $row['end'];
$event_array['allDay'] = true;
array_push($return_array, $event_array);
}
echo json_encode($return_array);
?>
我的问题是,我可以添加一个事件到MySQL数据库和选择的日期是2014-08-042014-08-08,但是一旦添加,这出现在日历上作为2014-08-04到2014-08-07,短1天。
下面是MySQL/PHP代码:<?php
session_start();
$dbh = new PDO('mysql:host=localhost;dbname=calendar', 'user', 'pass');
$stmt = $dbh->prepare("INSERT INTO bookings (forename, surname, start, end) VALUES (:forename, :surname, STR_TO_DATE(:start,'%Y-%m-%d'), STR_TO_DATE(:end,'%Y-%m-%d'))");
$stmt->bindParam(':forename', $forename);
$stmt->bindParam(':surname', $surname);
$stmt->bindParam(':start', $start);
$stmt->bindParam(':end', $end);
$forename = $_POST['inputForename'];
$surname = $_POST['inputSurname'];
$start = $_POST['dp1'];
$end = $_POST['dp2'];
$stmt->execute();
header("Location: /");
?>
我猜我在日期转换到MySQL时做错了什么,但看不到。
老问题,但我想我应该写下来以防有人偶然发现…
你需要做的是在你的初始化中设置你的nextDayThreshold:
nextDayThreshold: "00:00:00"
然后确保您输出的日期有时间,我通过将T23:59
附加到我的日期来做到这一点,即2014-08-04
将成为2014-08-04T23:59
。
查看以下答案了解更多细节:
fullCalendar多天事件跨度1天太短
fullCalendar多天事件跨度1天太短