【问题标题】:How do I repeat events in an ICS file every x seconds?如何每 x 秒重复 ICS 文件中的事件?
【发布时间】:2017-04-14 08:55:29
【问题描述】:

我正在尝试在 macOS Sierra 的日历中设置日历事件,该事件每 2,551,440 秒重复一次(恰好是月球的会合周期)。该系统使用 ICS 规范。

最终,我想要一个提供我所在位置的月亮升起和落下时间的日历,并且还需要列出月相(例如满月、新月等)。我在互联网上找到了很多人们手动创建事件的例子,但这非常乏味(多年来每天一个事件!),而且它们基于不同的时区(所以对我没有用) .

我从 ICS 规范中看到,文件格式本身支持每 x 秒重复一次的事件。我将事件导出为 ICS 文件(来自日历),然后在文本编辑器中编辑了 ICS 文件,但我一定是代码错误,因为它没有以正确的重复间隔重新导入 macOS 日历.相反,它导入了一个没有重复的事件。也有可能我的代码是正确的,但日历在导入时将其丢弃...

有人可以解释一下如何去做吗?

我找到了the RRULE Generator,但它只支持每小时间隔,而不是秒,因此对于我的需要来说不够精确。

我考虑过运行一个 bash 脚本来生成事件(它将作为一个 cron 作业每 2,551,440 秒运行一次),但这只会提前一个月通知。我宁愿无限期地设置它。

另一种选择可能是用 Python 编写脚本来创建单独的 ICS 事件文件;这也会很乏味...

我知道这不能直接在日历中完成;解决方案很可能是手动编辑每个 ICS 文件以正确设置重复,然后将它们导入日历...我只是不知道如何...

...或者是否有一个日历应用程序可以让您设置每 x 秒重复一次的事件?如果是这样,我可以在其中创建事件,将其导出,然后将其导入日历...

提前感谢您的任何想法。

【问题讨论】:

    标签: calendar icalendar macos-sierra


    【解决方案1】:

    所以,我想出了这个。

    1. Apple 日历、Google 日历和几乎所有日历应用程序都不支持每 x 秒重复一次的事件。 ICS 格式本身可以,而不是程序。

    2. 月球在一个倾斜的轨道上,所以无论如何这对我想要的都是不合适的解决方案。

    3. US Navy has an API 发布月球的升起/落下和相位数据。我保存了这个页面的响应(一个 JSON 文件),并做了一些 Python 代码来提取所需的数据,然后制作了一个 Python 脚本来为每个事件(每个月升一个事件)创建单独的 .ICS 文件(即 不是每 x 秒重复一次的事件)。然后我将这些 ICS 文件导入到 macOS 日历中。

    希望这对将来需要处理类似情况的其他人有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-09
      • 2021-02-27
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多