Se pueden calcular festivales como el Día del Padre y el Día de la Madre, o se pueden definir como el mejor viernes de cada mes para facilitar el acuerdo de las reuniones.
La copia del código es la siguiente:
/**
*
* @param strdate
* Fecha de inicio, formato aaa yyyy-mm-dd hh: mm: ss
* @param cyclePriod
* Repetir intervalo
* @param looppriod
* Repita el tipo, m = mes, d = día, y = año, w = semana, h = hora, f = minuto, s = segundo
* Mn = ¿Qué día es el día positivo del mes, MB = qué día es el último día del mes, si MB2 es el segundo día del último?
* W1..7 = Qué día de cada semana, MN1W2 = La primera semana del mes, MB2W4 = el segundo jueves del mes
* El valor después de W puede ser de valores múltiples, W135 representa la semana 1, la semana 3 y el viernes
* @param islunar
* Ya sea que se trate de un calendario lunar, el valor aprobado debe ser un calendario solar, y el calendario gregoriano devuelto sigue siendo el calendario solar después del cálculo de acuerdo con el calendario lunar. Actualmente, el calendario lunar tiene diferentes cálculos durante meses y años.
* @devolver
*/
Cadena estática pública NextTime (String Strdate, int cyclePriod,
String Looppriod, boolean islunar) {
Cadena returnValue = "";
int [] fechas = dateUtils.gendate (strdate);
Chinesecalendar ccalendar = nuevo chinesecalendar ();
ccalendar.setgregorianyear (fechas [0]);
ccalendar.setgregorianmonth (fechas [1]);
ccalendar.setgregoriandate (fechas [2]);
if ("m" .equalSignorecase (looppriod)) // procesa el mes
{
if (islunar) {
para (int i = 0; i <cicloPriod; i ++) {
ccalendar.nextChinesemonth ();
}
returnValue = dateUtils.gendate (ccalendar.getGregorianyear (),
ccalendar.getGregorianmonth (),
ccalendar.getGregoriandate ());
} demás {
returnValue = dateUtils.calDate (strdate, cicloPriod, 2);
}
} else if ("d" .equalSignorecase (looppriod)) // Día de procesamiento
{
returnValue = dateUtils.calDate (strdate, cyclepriod, 5);
} else if ("y" .equalsignorecase (looppriod)) // año de proceso
{
if (islunar) {
ccalendar.addchineseyear (cicloPriod);
returnValue = dateUtils.gendate (ccalendar.getGregorianyear (),
ccalendar.getGregorianmonth (),
ccalendar.getGregoriandate ());
} demás {
returnValue = dateUtils.calDate (strdate, cyclePriod, 1);
}
} else if ("w" .equalsignorecase (looppriod)) // Semana de procesamiento
{
returnValue = dateUtils.calDate (strdate, cyclepriod, 3);
} else if ("h" .equalsignorecase (looppriod)) // Horas de procesamiento
{
returnValue = timeUtils.addtime (strdate, 0, cicloPriod);
} else if ("f" .equalSignorecase (looppriod)) // Processing minutos
{
returnValue = timeUtils.addtime (strdate, 1, cicloPriod);
} else if ("s" .equalSignorecase (looppriod)) // Process Seconds
{
returnValue = timeUtils.addtime (strdate, 2, cyclePriod);
} else // manejar ciclos no convencionales
{
if ("m" .equalSignorecase (stringUtils.left (looppriod, 1))) {
Cadena mnb = looppriod.substring (1, 2);
Cadena wnb = "";
int mnbValue = 0;
int wnbValue = 0;
if (looppriod.indexof ("w")> 1) {
wnb = looppriod.substring (looppriod.indexof ("w") + 1,
looppriod.indexof ("w") + 2);
mnbValue = integer.parseInt (looppriod.substring (2,
looppriod.indexof ("w")));
wnbValue = Integer.ParseInt (Looppriod.substring (
looppriod.indexof ("w") + 1, looppriod.length ()));
if ("n" .equalsignorecase (mnb)) {
returnValue = getbeforeweekday (strdate, mnbvalue,
wnbValue);
} else if ("b" .equalSignorecase (mnb)) {
returnValue = getbackweekday (strdate, mnbvalue,
wnbValue);
}
} demás {
mnbValue = integer.parseInt (looppriod.substring (2,
looppriod.length ())) - 1;
if ("n" .equalsignorecase (mnb)) {
returnValue = CalDate (GivememonthFirst (Strdate),
mnbvalue, 5);
} else if ("b" .equalSignorecase (mnb)) {
returnValue = caldate (Givememonthlast (strdate),
-MnbValue, 5);
}
}
} else if ("w" .equalSignorecase (stringUtils.left (looppriod, 1))) {
String Week = StringUtils.right (Looppriod,
looppriod.length () - 1);
strdate = caldate (strdate, cyclepriod - 1, 3);
while (verdadero) {
strdate = caldate (strdate, 1, 5);
if (week.indexof (string.ValueOf (getweekday (strdate)))> = 0) {
returnValue = strdate;
romper;
}
}
}
}
return returnValue;
}