我有PHP代码,可以从数据库中提取所需的信息。 php日期代码的格式为“format(”Y-m-d H:i:s“)”“。我试图从数据库中获取这些日期,并使用JavaScript将它们添加到日历中。我在那里循环我要添加到日历的事件。我必须以不同的方式找到解决方案,但两者都不起作用。
<script type='text/javascript'>
<?php for($x = 0; $x < count($events); $x++) { ?>
var dateToConvert = new Date('<?php echo date(DATE_ISO8601, strtotime($events[$x]["startDate"])); ?>');
var startDate = dateToConvert.toISOString();
var endDate = '<?php echo date(DATE_ISO8601, strtotime($events[$x]["endDate"])); ?>';
var events = [
{
title: '<?php echo $events[$x]["name"]; ?>',
start: new Date(startDate),
end: endDate
}
];
<?php } ?>
</script>
我假设我错过了一些小事,但我无法理解。我使用了Chrome调试器,这就是我输入的内容。 (2013-03-18T01:00:00-0600)它似乎没有像它应该的那样结束Z.
数据库中的值为(2013-03-18 01:00:00)。
我错过了什么?
答案 0 :(得分:0)
您不应以任何字符串格式传递日期。相反,将它们作为数字传递。
var dateToConvert = new Date();
dateToConvert.setTime(<?php echo strtotime($events[$x]['startDate']); ?>000);
这将更可靠地工作。请注意,这里有三个零,因为JS以毫秒为单位处理时间,而PHP则在几秒钟内完成。
答案 1 :(得分:0)
您的ISO时间格式正确。日期时间结束时的“Z”表示“Zulu时间”,即UCT时区。
因此,如果您未指定其他时区,则只能指定“Z”。
在您的情况下,您引用的日期确实包含时区(-6000
),因此我不希望看到“Z”。
有关详细信息,请参阅维基百科页面:http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
对于在PHP和Javascript之间移动日期/时间值,我想说最简单的方法就是使用unix时间戳。它是一个简单的整数值,所以没有可以考虑的格式,两种语言都完全理解它。唯一需要注意的是,在Javascript中,PHP的时间是微秒与秒,所以你需要乘以或除以1000.但这很简单。