2011-02-03 117 views
1

我在看谷歌日历,想知道他们是如何做他们的提醒。Google日历如何进行提醒?

目前我只有一个日历,他们选择一个日期,当他们想要被通知。如果我想在几小时和几分钟内做出提醒,这种情况不会很好地展开。

那么他们是否像他们的数据库中有一个像“小时,几天,几分钟”那样的字段作为可能的字段?

还是他们存储日期,他们只是查询该日期和时间。因此,如果我想在我预约前一小时(比如说是2月3日下午3点),那么他们只会在第二天下午2:00 pm存储二月二日)

因此,他们会在2月3日下午2:00存储并在小时查询与当前小时匹配的日期?

回答

5

任何知道这些信息的人都不太可能在这样的公共论坛上发现它。而不是找出谷歌日历是如何工作的,我建议你考虑解决你的需求。除了其他任何东西,我怀疑你必须像Google日历那样扩展比例:)

你可能想要选择将提醒的分钟数作为最低公分母来存储 - 所以你应该存储一个小时为60分钟。我怀疑用户是否会介意他们是否进入60分钟,并显示为一小时。

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

(正如我说的,这不是提供有关谷歌日历如何做事任何提示。)

+0

@乔恩飞碟双向 - 雅好,我怀疑会有人告诉我如何确切地工作,但也许有人可以理论他们如何做。所以你的方式总是存储分钟? – chobo2 2011-02-03 20:31:12

+0

@ chobo2:我认为这取决于应用程序的其他部分如何工作,说实话。存储*分钟和绝对时间都有优点,但同样也有其他优点。你如何发送通知? – 2011-02-03 21:24:40

0

这已经不是什么好投机谷歌是如何做的;无论Google使用什么,它都由一个真正庞大的服务器集群提供支持,并且可能比您需要的要多得多。对于较小的应用程序,即使是企业级应用程序,也有直接的方法来完成此任务。

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

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

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

0

我来这里自己问这个问题。我个人的理论是,他们以某种方式设置了cron作业,以在设定的时间开火。但他们也必须能够删除/更新这些工作。我正在运行提醒样式服务,我所做的最好的做法是每天运行一次计划任务,以发送包含该日期的任何内容。我想提供更多的flexibilty,但没有理论如何做到这一点,并推断堆栈集体能想出更好的办法比我有...