如何获得所选国家的国定假日

Posted

技术标签:

【中文标题】如何获得所选国家的国定假日【英文标题】:How to get national holidays of selected country 【发布时间】:2013-09-30 13:15:51 【问题描述】:

我正在编写一个允许用户从列表中选择国家的应用程序。当他们选择一个国家时,会出现该国家的国定假日列表。

我见过CalendarProvider 和Google Calendar V3,但它们似乎只提供当前用户的日历。

如何获取特定国家/地区的国定假日?任何建议都会对我有所帮助。


更新:

我找到了this post,它可以获取 JSON 格式的假期列表。在此示例中,国家/地区代码由日历 ID 定义,例如 pt_br.brazilian#holiday@group.v.calendar.google.com 或 en.usa#holiday@group.v.calendar.google.com。

但我找不到任何关于此的文档。是否可以通过这种方式使用 API?如果是,我在哪里可以获得这些日历 ID?

【问题讨论】:

【参考方案1】:

使用Google Calendar API V3 解决了问题。我从this post 找到的想法。 假期可以从谷歌的默认假期日历中获取。

默认节假日日历ID列表见here,支持40个国家。

一段处理权限和获取假期列表的代码:-

com.google.api.services.calendar.Calendar client = null;
        credential = GoogleAccountCredential.usingOAuth2(mContext, CalendarScopes.CALENDAR);
        credential.setSelectedAccountName(mList.get(0));
        client = getCalendarService(credential);
        do 
            com.google.api.services.calendar.model.Events events;
            events = client.events().list("en.usa#holiday@group.v.calendar.google.com").setPageToken(pageToken).execute();
            onHolidayChecked(events.getItems()); //result return here (events.getItems())
            pageToken = events.getNextPageToken();
         while (pageToken != null);

private com.google.api.services.calendar.Calendar getCalendarService(GoogleAccountCredential credential) 
    return new com.google.api.services.calendar.Calendar.Builder(androidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();

【讨论】:

可以用javascript做同样的事情吗? @Vitor Guerreiro 这是某种谷歌 API,所以我认为这是可能的 我收到此错误 com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException,我还查看了 google,这是否需要链接到应用程序以获取数据?【参考方案2】:

CalendarProvider 文档声明它只提供当前用户的日历信息。

日历提供程序是用户日历事件的存储库。 Calendar Provider API 允许您执行查询、插入、更新、 和删除对日历、事件、与会者、提醒和 以此类推。

您需要访问第三方 API(例如this one)并将该信息加载到您的应用程序中。

【讨论】:

感谢您的回复。您的 Holiday API 是付费服务,我会选择免费的。你试过谷歌日历 V3 吗?阅读他们的文档时我有点困惑 我没有使用 Google Calendar V3 的经验。看看这个:kayaposoft.com/enrico 好的,一旦你尝试了,请告诉我这是否适合你 :) 为提及第三方 API 的例子点赞

以上是关于如何获得所选国家的国定假日的主要内容,如果未能解决你的问题,请参考以下文章

教育-成人高等教育-函授:函授

如何使用 google api 根据所选国家/地区自动完成?

如何在我的 javascript AJAX 代码中显示所选国家/地区的城市名称和人口?

是否可以在选定的谷歌地图路线中获得完整的国家列表?

如何根据所选国家/地区在 MVC3 中为美国或加拿大邮政编码验证编写自定义验证器?

JAVA判断当前日期是节假日还是工作日