您的问题看起来更像是一个职位发布到工作委员会,要求某人为您编写您的应用程序。
它真的没有那么复杂,你想要做什么。只需设置一个 MySQL 表来存储 appts,可能包括名称、描述、开始时间戳、结束时间戳和“重复”布尔值。使用 Ajax 查询数据库,在您喜欢的任何时间间隔内查看是否有任何即将到来的约会。如果为真,则通知用户。
对于时间格式,您可以执行以下操作:
function format_date($timestamp1, $timestamp2,$repeating) {
$str = "";
if($repeating) {
$str .= "Every Day";
}
$str .= "From ".date("g:i a",$timestamp1)." To ".date("g:i a",$timestamp2);
return ($str);
}
以下是您可以查看的一些查询和一些表创建 SQL:
CREATE TABLE `appointments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`description` text,
`recurring` int(11) DEFAULT NULL,
`recurrence_type` varchar(50) DEFAULT NULL,
`starting_timestamp` int(14) DEFAULT NULL,
`ending_timestamp` int(14) DEFAULT NULL,
`end_recurring_timestamp` int(14) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
mysql_query("SELECT * FROM appointments
WHERE recurring=0
AND starting_timestamp <= ". time() + 86400 ."
AND starting_timestamp > ". time() ."
ORDER BY starting_timestamp DESC");
mysql_query("SELECT * FROM appointments
WHERE recurring=1
AND recurrence_type='DAILY'
AND starting_timestamp <= ". time() + 86400 ."
AND end_recurring_timestamp > ". time() ."
ORDER BY starting_timestamp DESC");
每周和每月的重复将更加复杂,并且可能需要在 SQL 查询之外进行操作。这可能意味着更高的开销。
对于此示例,我将日期存储为时间戳。但是,将它们存储为字符串并使用 strtotime() 之类的东西可能更合理。虽然,我不知道该功能有多可靠。
你可以明白的。至于时区支持,请查看http://www.ultramegatech.com/blog/2009/04/working-with-time-zones-in-php/和http://www.php.net/manual/en/类.datetimezone.php