我需要弄清楚特定日期是否属于假日,例如阵亡将士纪念日,劳动节,感恩节,复活节等。但是,这些假期根据一周中的一周或一周中的某一天浮动。我确信有代码可以做到这一点,所以我不想重新发明轮子。
具体来说,如果事件发生在假日,我会知道某事发生的日期,并希望添加有关该日期的信息,或者做额外的事情(例如增加额外的工资)。这样的事情,但对于每个联邦假期:
private int storeYear = 0;
private int storeMonth = 0;
private int storeDay = 0;
private void function openPicker(){
final TextView txtDate = findViewById(R.id.yourid);
final Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
//TextView txtDate = null;
txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1)
+ "-" + year);
storeYear = year;storeMonth = monthOfYear;storeDay = dayOfMonth;
message("message", "Mensaje", mYear + "/" + mMonth + "/"
+ mDay, this, context);
}
public void onDateSet1(DatePicker view, int year,
int monthOfYear, int dayOfMonth) { // TODO
// Auto-generated
// method stub
}
}, mYear, mMonth, mDay);
dpd.show();
}
另一方面,有没有人知道CF自定义标签库的工作URL,还是他们杀了?
答案 0 :(得分:4)
您可以访问&缓存Google Calendar US Holiday Feed。您需要注册免费的API密钥。 “FullCalendar”有关于建立日历帐户以供w / JS使用的说明,但是一旦配置完就可以使用CF来使用JSON。
http://fullcalendar.io/docs/google_calendar/
使用浏览器开发人员F12工具查看此页面上的源和服务器JSON响应:
http://fullcalendar.io/js/fullcalendar-2.5.0/demos/gcal.html
您将使用的URL看起来像这样(但使用您自己的API密钥):
您获得的JSON响应将包含一个“项目”数组,其中包含假日信息和ISO8601格式的日期。
"items": [
{
"kind": "calendar#event",
"etag": "\"2778476758000000\"",
"id": "20140101_60o30dr46oo30c1g60o30dr4ck",
"status": "confirmed",
"htmlLink": "https://calendar.google.com/calendar/event?eid=MjAxNDAxMDFfNjBvMzBkcjQ2b28zMGMxZzYwbzMwZHI0Y2sgdXNhX19lbkBo",
"created": "2014-01-09T03:32:59.000Z",
"updated": "2014-01-09T03:32:59.000Z",
"summary": "New Year's Day",
"creator": {
"email": "usa__en@holiday.calendar.google.com",
"displayName": "Holidays in United States",
"self": true
},
"organizer": {
"email": "usa__en@holiday.calendar.google.com",
"displayName": "Holidays in United States",
"self": true
},
"start": {
"date": "2014-01-01"
},
"end": {
"date": "2014-01-02"
},
"transparency": "transparent",
"visibility": "public",
"iCalUID": "20140101_60o30dr46oo30c1g60o30dr4ck@google.com",
"sequence": 0
}
]
我建议保存API响应数据(这样您就可以在本地重用它而不必依赖远程API)并使用ISO8601日期作为键(yyyy-MM-DD)生成结构,并使值为数组假日名字。您可能希望将此扩展为表示是否为联邦“付费”假期,因为我不相信Google Calendar API(或任何假日日期库)会为您确定。
Holidays = {
"2015-12-31" = ["New Year's Eve"],
"2016-01-01" = ["New Year's Day"]
}
然后使用类似的东西作为你的逻辑:
holidayNames = '';
if (StructKeyExists(Holidays, DateFormat(theDate, "yyyy-MM-DD"))){
holidayNames = ArrayToList(Holidays[DateFormat(theDate, "yyyy-MM-DD")]);
}
更新在Google搜索基于ColdFusion的库时,我意识到我在一年前写了一个GetGoogleHolidays UDF。 (UDF使用Google Calendar API获取美国假日JSON数据,生成一个包含YYYYMMDD键的结构,其中包含一系列假日名称并将其缓存24小时。)
http://gamesover2600.tumblr.com/post/104768724954/fetch-holiday-dates-from-google-calendar-api-using