Google日历如何进行提醒?

时间:2011-02-03 20:21:49

标签: c# asp.net-mvc google-calendar-api

我正在查看谷歌日历,并想知道他们是如何做出提醒的。

目前我只有一个日历,他们选择希望收到通知的日期。如果我想做几小时和几分钟的提醒,这不会很好地扩展。

他们是否喜欢他们的数据库中的某个字段有“小时,天,分钟”作为可能的字段?

或者他们存储日期,他们只是查询该日期和时间。所以,如果我想在我预约前一个小时(比如说是2月3日下午3点),那么他们只是在第二天下午2点存放feb

所以他们会在2月3日下午2:00和小时只查询与当前小时相匹配的日期?

3 个答案:

答案 0 :(得分:5)

任何知道此类信息的人都不太可能在像这样的公共论坛上透露这些信息。我建议您考虑解决您的要求,而不是了解Google日历的工作原理。除了其他任何事情,我怀疑你必须像谷歌日历一样扩展:)

您可能希望选择将提醒的分钟数存储为最低公分母 - 因此您将一小时存储为60分钟。我怀疑用户是否会介意他们输入60分钟并显示为一小时。

存储绝对时间在某些方面很有用(简单查询),但这意味着如果您更改开始日期/时间,则还需要重新计算提醒日期/时间。

(正如我所说,这并未提供有关Google日历如何处理的任何提示。)

答案 1 :(得分:0)

谷歌如何做到这一点并不好;无论谷歌使用什么,它都是由一个真正庞大的服务器集群支持,并且可能比你需要的更多。对于较小的应用程序,即使是企业级应用程序,也有简单的方法来实现这一目标。

对于架构,我会将约会存储为普通日期/时间,并将提醒存储为另一个日期/时间(您可以使用TimeSpan结构计算给定小时和分钟),或者作为Ticks的数量一个TimeSpan。两者都有优点和缺点;使用日期/时间提醒,如果约会更改,您必须重新计算该日期/时间。但是,当存储在模式中时,提醒时间是人类可读的。将值作为刻度存储则相反; TimeSpan中的15分钟刻度是15分钟,您可以将它添加到他们为实际预约指定的任何日期时间。但是,它只是数据库中的一个大数字,要求用户使用您的应用程序来理解数据。

您可以在约会记录本身上存储一个约会提醒,或者您可以通过维护一个引用约会记录并包含提醒时间的单独表格,为每个约会提供许多预先安排的提醒。

对于实际的提醒实现,您为处理这些提醒而创建的应用程序(或其中的一部分功能)应该向数据库查询将首先出现的当前用户感兴趣的第一个提醒,并将计时器设置为过期在指定的时间。该线程将只停留所需的毫秒数,然后触发一个事件,您将用它来显示提醒。

答案 2 :(得分:0)

我自己来这里问这个问题。我个人的理论是,他们以某种方式设置了cron工作,以便在规定时间内解雇。但他们也必须能够删除/更新这些工作。我正在运行提醒式服务,我所做的最好的事情就是每天运行一次计划任务,以便在该日期发送任何日期。我想提供更多的灵活性,但没有理论化的方法,并认为堆栈集合可以提出比我更好的方式......