【发布时间】:2013-06-15 04:18:33
【问题描述】:
我正在尝试将 jquery 日历插件集成到我的自定义 cms 中,
我的问题是第二天会显示设置原始值(在数据库中)的事件。
这就是我检索我的事件的方式:
$query = "SELECT id,avatar, titulo AS title,texto as name, unix_timestamp(start_date) as start,unix_timestamp(end_date) as end, start_date, end_date
FROM blogs
WHERE (unix_timestamp(start_date) >= '$start' OR unix_timestamp(end_date) <= '$end')
AND post_type = 'event'
AND lan = '$lan'";
//echo $query;
$year = date('Y');
$month = date('m');
$result = mysql_query($query);
$array = array();
$i = 0;
while ($row = mysql_fetch_array($result)) {
$raw = $row;
$raw['url'] = '/blog/'.urls_amigables($raw['title']).'/'.$raw['id'].'/';
$raw['start_show'] = prettyDateTime($raw['start_date']);
$raw['end_show'] = prettyDateTime($raw['end_date']);
$array[$i] = $raw;
$i++;
}
echo json_encode($array);
这就是我向jquery calendar 展示它们的方式:
$('#calendario').fullCalendar({
events: "/includes/json-events.php",
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' days\n' +
'(should probably update your database)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
},
eventMouseover: function( event, jsEvent, view ) {
var item = $(this);
var image = '';
if(event.avatar != '')
image = '<img src="'+event.avatar+'" />';
if(item.find('.nube').length == 0){
var info = '<span class="nube"><h2>'+event.title+'</h2>'+image+' <p class="text">'+event.name+'</p><p>'+event.start_show+' <br /> '+event.end_show+'</p><p><a href="'+event.url+'">read_more</a></p></span>';
item.append(info);
}
if(parseInt(item.css('top')) <= 200){
item.find('.nube').css({'top': 20,'bottom':'auto'});
item.parent().find('.fc-event').addClass('z0');
}
if(parseInt(item.css('left')) > 500){
item.find('.nube').css({'right': 0,'left':'auto'});
item.parent().find('.fc-event').addClass('z0');
}
item.find('.nube').stop(true,true).fadeIn();
console.log(parseInt(item.css('left')));
},
eventMouseout: function( event, jsEvent, view ) {
var item = $(this);
item.find('.nube').stop(true,true).fadeOut();
},
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
eventRender: function(event, element) {
}
});
这里的问题是unix_timestamp(start_date) 会在日历中生成第二天
(例如:如果将 start_date 存储在当月的第 17 天,则在日历中将出现在第 18 天)
我不确定我错过了什么。这一切都是我按照他们的规范完成的......
知道我在哪里失败了吗? (jquery、mysql 还是时区设置?)
-编辑-
我有点修复它
$row['start'] = $row['start'] - 60*60*24 /* One day */;
所以现在start_date 和start 一起有意义(在日历中...)
请告诉我你知道更好的解决方案!
【问题讨论】:
-
很好的详细问题,是否有可能一个日历从 0 开始计数,而另一个日历从 1 开始计数? (即:jquery 日历 vs mysql 日历)
-
所以你是说mysql查询返回了错误的日期?
-
MySQL 是否在不同的主机上? dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html 声明“UNIX_TIMESTAMP() 假定其参数是当前时区中的日期时间值”
-
我会说您服务器当前时区设置的问题,但我只是在这里推测
-
您的
php代码中的prettyDateTime怎么样?它有什么作用?
标签: php javascript jquery date jquery-plugins