Jquery 选择事件的fullCalendar UNIX时间戳转换问题

Jquery 选择事件的fullCalendar UNIX时间戳转换问题,jquery,global-variables,fullcalendar,unix-timestamp,Jquery,Global Variables,Fullcalendar,Unix Timestamp,我使用jQuery小部件DatePicker和Dialog与Adam Shaw的fullCallendar进行交互。我有很多工作要做。我可以使用DatePicker跳转到fullcalendar中的特定日期。当我选择预订一个事件时,jQuery对话框出现,我使用ajax调用将字段发送到php脚本以处理数据 然而,我的问题来自fullcalendar的开始和结束变量中使用的UNIX时间戳。我在html文件的顶部设置了一个全局变量,并在fullcalendar中的选择中设置开始/结束时间,以便将数据

我使用jQuery小部件DatePicker和Dialog与Adam Shaw的fullCallendar进行交互。我有很多工作要做。我可以使用DatePicker跳转到fullcalendar中的特定日期。当我选择预订一个事件时,jQuery对话框出现,我使用ajax调用将字段发送到php脚本以处理数据

然而,我的问题来自fullcalendar的开始和结束变量中使用的UNIX时间戳。我在html文件的顶部设置了一个全局变量,并在fullcalendar中的选择中设置开始/结束时间,以便将数据传递给对话框。从对话框中,我将其传递给我的PHP脚本。但当我将UNIX时间戳转换为“YmjHis”格式的日期时,我得到了奇怪的结果

以下是fullcalendar中“选择”方法的相关代码:

select: function(start, end, allDay) { 
        // need to check the day first. If the selected day/time < today, throw an alert
        // otherwise allow the booking of the conference.
            var now = calendar.fullCalendar('getDate');
            if (start < now )
            {
                alert('You cannot book a conference in the past!');
                calendar.fullCalendar( 'unselect' );
            }
            else
            {
                                    // set the global variables
                st = start;
                et = end;

                $('#dialog-form').dialog('open'); // open the dialog form
            }

            },
好的,现在我的bookings.php文件只有以下测试代码:

$file = 'variables.txt'; 
$arr= $_REQUEST; 
$fp = fopen($file, 'w') or die('Could not open file!');  
fwrite($fp, "variables are:\n");
foreach ($arr as $key => $value) { 
    $toFile = "Key: $key; Value: $value \n"; 
// write to file  
fwrite($fp, "$toFile") or die('Could not write to file'); 
}

// DEBUG CODE write some blank space
fwrite($fp, "\n\n") or die('Could not write to file');
$startTime = $_REQUEST['start'];
$endTime = $_REQUEST['end'];

$start = date('YmjHis', $startTime);
fwrite($fp, "start time: $startTime = $start\n") or die('Could not write to file');
$end = date('YmjHis', $endtime);
fwrite($fp, "end time: $endTime = $end\n") or die('Could not write to file');

// close file  
fclose($fp);
当我查看variables.txt文件时,我看到:

Key: e; Value: me@blah.com
Key: t; Value: blah
Key: n; Value: blah
Key: p; Value: 2
Key: start; Value: 1339610400000
Key: end; Value: 1339617600000


start time: 1339610400000 = 444200724160000
end time: 1339617600000 = 19691231160000
我希望开始和结束时间的格式是:20120613113000,而不是以1969年的日期结束


所以很明显我在转换过程中做错了什么。这是完整实现fullCalendar的最后一个障碍,我需要它来完成我需要它做的事情,我被难倒了。非常感谢您的帮助。

现在看来,您的开始时间和结束时间中的零太多了。我猜是因为某种原因,当你把它从请求中拉出来的时候,它得到了填充

Unix转换

开始时间
1339610400000=07/24/20@6:00:00pm东部标准时间(M/D/Y@h:M:s)

结束时间 1339617600000=10/16/20@2:00:00am东部标准时间(M/D/Y@h:M:s)

我认为您使用的日期不是2020年,而是2012年,因此我将上面的数字缩短为10位(当前TS截至2012年12月6日@12:57pm=1339610258)

开始时间 1339610400=06/12/12@东部时间下午1:00:00

结束时间 1339617600=06/13/12/@3:00:00pm东部标准时间

现在,这看起来更像是在日历中预定的日期


我猜你在约会的某些地方得到了额外的零

现在看来,开始时间和结束时间中的零太多了。我猜是因为某种原因,当你把它从请求中拉出来的时候,它得到了填充

Unix转换

开始时间
1339610400000=07/24/20@6:00:00pm东部标准时间(M/D/Y@h:M:s)

结束时间 1339617600000=10/16/20@2:00:00am东部标准时间(M/D/Y@h:M:s)

我认为您使用的日期不是2020年,而是2012年,因此我将上面的数字缩短为10位(当前TS截至2012年12月6日@12:57pm=1339610258)

开始时间 1339610400=06/12/12@东部时间下午1:00:00

结束时间 1339617600=06/13/12/@3:00:00pm东部标准时间

现在,这看起来更像是在日历中预定的日期


我猜你在约会的某些地方得到了额外的零

我应该指出,我在其他地方做了完全相同的转换,以显示数据库中的事件,它工作得很好。我应该指出,我在其他地方做了完全相同的转换,以显示数据库中的事件,它工作得很好。是的,我注意到了,但不确定发生这种情况的原因和地点。我在声明时将变量初始化为0,然后稍后再进行设置。所以我真的不明白。但是如果我将时间戳截断为10个字符而不是13个字符,它应该可以工作。好的,如果我像这样对输入做substr:$start=substr($\u REQUEST['start'],0,10)$end=substr($_请求['end'],0,10);我以以下内容结束:键:开始;值:133969500000键:结束;值:1339700400000开始时间:1339695000=20120614103000结束时间:1339700400=19691231160000开始时间正确时,结束时间应为2012061512000,但我得到的是1969年。在jquery对话框中,从st和et计算的+st和+et是全局变量,设置在脚本顶部为0。后来,在fullcalendar的选择功能中,我将它们分别设置为开始和结束。我认为没有一种方法可以在不使用全局变量的情况下传递开始和结束时间。fullcalendar中没有访问器函数来获取我可以看到的当前选择开始/结束时间。好的,你的答案是正确的,现在它工作得很好。事实证明,我的调试代码中有一个小错误,这就是为什么我得到了bizzar结束日期/时间。所以,非常感谢你,内特。然而,产生额外填充的原因仍然是个谜。有趣的是,如果我在调用jQuery对话框之前进行测试ajax调用,并从fullcalendar传递实际的开始和结束变量,那么在时间戳的末尾会得到相同的额外30。真奇怪。所以,fullcalendar(我使用的是最新的1.5.3)正在做一些事情。现在将其存储在数据库中并刷新!是的,我确实注意到了这一点,但不确定为什么会发生这种情况,也不确定发生在哪里。我在声明时将变量初始化为0,然后稍后再进行设置。所以我真的不明白。但是如果我将时间戳截断为10个字符而不是13个字符,它应该可以工作。好的,如果我像这样对输入做substr:$start=substr($\u REQUEST['start'],0,10)$end=substr($_请求['end'],0,10);我以以下内容结束:键:开始;值:133969500000键:结束;值:1339700400000开始时间:1339695000=20120614103000结束时间:1339700400=19691231160000开始时间正确时,结束时间应为2012061512000,但我得到的是1969年。在jquery对话框中,从st和et计算的+st和+et是全局变量,设置在脚本顶部为0。后来,在fullcalendar的选择功能中,我将它们分别设置为开始和结束。我认为没有一种方法可以在不使用全局变量的情况下传递开始和结束时间。fullcalendar中没有访问器函数来获取当前的
Key: e; Value: me@blah.com
Key: t; Value: blah
Key: n; Value: blah
Key: p; Value: 2
Key: start; Value: 1339610400000
Key: end; Value: 1339617600000


start time: 1339610400000 = 444200724160000
end time: 1339617600000 = 19691231160000