我按照规定的方式使用FullCalendar:
<link href='../fullcalendar.css' rel='stylesheet' />
<link href='../fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='../lib/moment.min.js'></script>
<script src='../lib/jquery.min.js'></script>
<script src='../fullcalendar.min.js'></script>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultDate: '2016-09-12',
navLinks: true,
editable: true,
eventLimit: true,
events: [
{
id: 101,
title: 'Repeating Event',
start: '2016-09-09T15:00:00',
end: '2016-09-09T15:30:00',
},
{
id: 102,
title: 'Repeating Event',
start: '2016-09-16T17:00:00'
end: '2016-09-16T17:30:00'
}
],
// EXTERNAL EVENT DROPPED
eventReceive: function(event){
// loop event data
for(var key in event){
console.log(key+" ------->"+event[key]+"\n");
}
// RETURNS MILLISECONDS i.e. '1498212000000' -> '1498213800000'
// WHICH MAKES ME THINK THAT THE MAKERS OF FULLCALENDAR INTENDED ME TO USE MILLISECONDS
alert(event['start']+" -> "+event['end']);
// SAVE EVENT
SAVE_EVENT_VIA_SOME_AJAX(event['id'],event['title '], event['start'], event['end']);
}
});
});
</script>
研究将FullCalendar事件保存到数据库时;我看到很多转换 - 各种日期格式 - 来回传入数据。
我正在寻找最轻,最准确,最简单的方法。
FullCalendar返回'event['start']
'和'event['end']
',以毫秒为单位。
这似乎是 - “最轻的”和准确的(你怎么能用毫秒和moment.js出错) - 保存到数据库的方式./?
如果这是正确的 - 那我现在应该如何显示这些日期呢?
FullCalendar似乎不接受events:[]
中的毫秒,这让我觉得可能会以毫秒为单位将事件保存到MySQL,这是错误的吗?
答案 0 :(得分:1)
eventRender方法中的事件开始日期和结束日期(与日历中的大多数位置一样)是momentJS 对象。所以在内部它们会以毫秒为单位存储时间戳,就像您一样,如果您将原始对象记录到控制台,那么很可能会看到。
但您可以以任何您想要的格式输出日期 - 请参阅https://momentjs.com/docs/#/displaying/。因此,您可以在几毫秒内将日期传递给服务器,或者像ISO格式那样明确地传递给服务器。
但即使您以毫秒为单位将日期传递给您的服务器/数据库,这并不意味着您必须以格式返回它。只要将日期存储在数据库的DateTime字段中,就可以再次使用服务器端语言的日期格式化函数(例如PHP,.NET,无论您使用什么)在检索时以任何方式输出它它 - ISO格式是fullCalendar / momentJS最容易理解的格式。