javascript - DatePicker、FullCalendar 和 MySQL 事件日期最终缩短了一天

标签 javascript php jquery mysql datepicker

我正在使用 DatePicker、FullCalendar 和 MySQL 的组合。

日期选择器初始化

<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-042014-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 multi-day event spans 1 day too short

fullCalendar multi-day event spans 1 day too short

关于javascript - DatePicker、FullCalendar 和 MySQL 事件日期最终缩短了一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25159915/

相关文章:

javascript - 如何获取H1标签内文本的宽度?

jquery - jquery 中 slider 的值

javascript - 使用 jQuery 将多级 UL 转换为带有 optgroups 的选择框

javascript - jQuery 提交时仅触发一次

javascript - 在 jQuery Mobile 中更改页面时闪烁的 UI

php - 如何在PHP中访问YouTube数据API JSON响应$ t变量?

php批量上传的最大执行时间问题

javascript - 无法在精细 uploader 中查看缩略图上的图像

javascript - Angular Material md-select 空值验证不起作用

php - 如何使用 laravel 基于数据库条目运行 cron 作业?