FullCalendar - 以毫秒为单位保存事件开始/结束 - 格式与否?

时间:2017-06-23 20:49:26

标签: mysql fullcalendar milliseconds

  • 我有一个使用FullCalendar的应用程序。
  • 我想将事件保存到MySQL数据库。

我按照规定的方式使用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,这是错误的吗?

1 个答案:

答案 0 :(得分:1)

eventRender方法中的事件开始日期和结束日期(与日历中的大多数位置一样)是momentJS 对象。所以在内部它们会以毫秒为单位存储时间戳,就像您一样,如果您将原始对象记录到控制台,那么很可能会看到。

但您可以以任何您想要的格式输出日期 - 请参阅https://momentjs.com/docs/#/displaying/。因此,您可以在几毫秒内将日期传递给服务器,或者像ISO格式那样明确地传递给服务器。

但即使您以毫秒为单位将日期传递给您的服务器/数据库,这并不意味着您必须以格式返回它。只要将日期存储在数据库的DateTime字段中,就可以再次使用服务器端语言的日期格式化函数(例如PHP,.NET,无论您使用什么)在检索时以任何方式输出它它 - ISO格式是fullCalendar / momentJS最容易理解的格式。