Des festivals comme la fête des pères et la fête des mères peuvent être calculés, ou ils peuvent être définis comme le meilleur vendredi de chaque mois pour faciliter la disposition des réunions.
La copie de code est la suivante:
/ **
*
* @param strdate
* Date de début, format yyyy-mm-dd hh: mm: ss
* @param cyclePriod
* Répéter l'intervalle
* @param looppriod
* Type de répétition, m = mois, d = jour, y = an, w = semaine, h = heure, f = minute, s = seconde
* Mn = Quel jour est le jour positif du mois, MB = quel jour est le dernier jour du mois, si MB2 est le deuxième jour du dernier
* w1..7 = quel jour de chaque semaine, mn1w2 = la première semaine du mois, mb2w4 = le deuxième jeudi du mois
* La valeur après W peut être plusieurs valeurs, W135 représente la semaine 1, la semaine 3 et le vendredi
* @param islunar
* Qu'il s'agisse d'un calendrier lunaire, la valeur adoptée doit être un calendrier solaire, et le calendrier grégorien retourné est toujours le calendrier solaire après calcul selon le calendrier lunaire. Actuellement, le calendrier lunaire a des calculs différents depuis des mois et des années.
* @retour
* /
chaîne statique publique suivante (String Strdate, int cyclePriod,
String LoopPriod, booléen islunar) {
String returnValue = "";
int [] dates = dateutils.gendate (strdate);
ChineseCalendar CCalendar = new ChineseCalendar ();
ccalendar.setgregorianyear (dates [0]);
ccalendar.setgregorianmonth (dates [1]);
ccalendar.setgregoriAndate (dates [2]);
if ("m" .equalsignorecase (LoopPriod)) // traite le mois
{
if (islunar) {
pour (int i = 0; i <cyclePriod; i ++) {
ccalendar.nextCHinesEmonth ();
}
returnValue = dateutils.gendate (ccalendar.getGregorianyear (),
ccalendar.getgregorianmonth (),
ccalendar.getGregoriandate ());
} autre {
returnValue = dateUtils.caldate (Strdate, cyclePriod, 2);
}
} else if ("d" .equalsignorecase (LoopPriod)) // jour de traitement
{
returnValue = dateUtils.caldate (Strdate, cyclePriod, 5);
} else if ("y" .equalsignorecase (LoopPriod)) // Année de processus
{
if (islunar) {
ccalendar.addchineseyear (CyclePriod);
returnValue = dateutils.gendate (ccalendar.getGregorianyear (),
ccalendar.getgregorianmonth (),
ccalendar.getGregoriandate ());
} autre {
returnValue = dateUtils.caldate (Strdate, cyclePriod, 1);
}
} else if ("w" .equalsignorecase (LoopPriod)) // Semaine de traitement
{
returnValue = dateUtils.caldate (Strdate, cyclePriod, 3);
} else if ("h" .equalsignorecase (LoopPriod)) // heures de traitement
{
returnValue = timeUtils.Addtime (Strdate, 0, CyclePriod);
} else if ("f" .equalsignorecase (LoopPriod)) // Processus de traitement
{
returnValue = TimeUtils.Addtime (Strdate, 1, CyclePriod);
} else if ("s" .equalsignorecase (LoopPriod)) // traite les secondes
{
returnValue = timeUtils.Addtime (Strdate, 2, CyclePriod);
} else // gérer les cycles non conventionnels
{
if ("m" .equalSignoreCase (stringUtils.left (LoopPriod, 1))) {
String mnb = LoopPriod.SubString (1, 2);
String 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 = gmackweekday (strdate, mnbvalue,
wnbValue);
}
} autre {
mnbValue = Integer.ParseInt (LoopPriod.Substring (2,
LoopPriod.Length ())) - 1;
if ("n" .equalSignoreCase (mnb)) {
returnValue = Caldate (GiveMemHFirst (Strdate),
mnbValue, 5);
} else if ("b" .equalsignorecase (mnb)) {
returnValue = Caldate (GiveMemHlast (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 (true) {
strdate = caldate (strdate, 1, 5);
if (week.indexof (string.valueof (getweekday (strdate)))> = 0) {
returnValue = Strdate;
casser;
}
}
}
}
retour returnValue;
}