如何获得所选国家的国定假日
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 代码中显示所选国家/地区的城市名称和人口?