我正在使用fullcalendar(https://fullcalendar.io(。当我将事件从一次降低到另一次时,小时会变化 4小时。但是,当我单击日期并添加事件时,这不会发生。
这是我的"事件"事件:
eventDrop: function(eventDropInfo) {
console.log(eventDropInfo);
$.ajax({
url: 'update.php',
data: 'id='+ eventDropInfo.event.id+'title='+ eventDropInfo.event.title+'&start='+ eventDropInfo.event.start.toISOString()+'&allDay='+ eventDropInfo.event.allDay,
type: "POST",
success: function(json) {
alert('success');
calendar.refetchEvents();
}
});
},
我的update.php文件如下:
// get database connection
require_once 'api/config/connection.php';
// Check user information
$fusername = $_SESSION['fusername'];
$stmt = $conn->prepare("SELECT * FROM users WHERE fusername=:fusername;");
$stmt->bindParam(':fusername', $fusername);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_OBJ);
if(isset($_POST["id"])){
$start_event = $_POST['start'];
$end_event = $_POST['end'];
$id = $_POST['id'];
$allDay = $_POST['allDay'];
// Check user information
$stmt = $conn->prepare("UPDATE events SET start_event=:start_event, end_event=:end_event, allDay=:allDay WHERE id=:id");
$stmt->bindParam(':start_event', $start_event);
$stmt->bindParam(':end_event', $end_event);
$stmt->bindParam(':id', $id);
$stmt->bindParam(':allDay', $allDay);
$stmt->execute();
}
event.start在控制台中的启动显示为:开始:2019年7月30日星期二08:00:00 GMT-0400(东部日光时间(
但是,当我应用" .toisstring"时,它将转换为" 2019-07-07-30T12:00:00.000Z",并将其发布到数据库中,为2019-07-30 12:00:00(提前4小时(。
我还注意到当我单击日期单元格以添加事件时,使用console.log我从事件对象开始startstr和endstr中获得如下:
开始:2019年8月4日星期日05:30:00 GMT-0400(东部日光时间(
结束:2019年8月4日星期日06:00:00 GMT-0400(东部日光时间(
startstr:" 2019-08-04T05:30:00-04:00"
endstr:" 2019-08-04T06:00:00-04:00"
此(上(正是我希望将事件放入日期单元格时的格式。
但是,当我使用ToisoString时,我的日期时间将转换为" T12:00.00.000Z",而不是(Z(,而不是在末端添加时间外的时间。它们如何转换为" T05:30:00-04:00"?我的意思是,我只需要日期为xx:xx:xx,然后将其输入到数据库中。
任何帮助!谢谢。
toisostring((使用UTC-0并相应地调整日期。
https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date/date/toisostring