Festivals wie den Vatertag und den Muttertag können berechnet werden, oder sie können als der beste Freitag im Monat definiert werden, um die Anordnung von Besprechungen zu erleichtern.
Die Codekopie lautet wie folgt:
/**
*
* @param strdate
* Startdatum, Format yjyy-mm-dd hh: mm: ss
* @param cyclePriod
* Wiederholungsintervall
* @param Looppriod
* Wiederholtyp, m = Monat, d = Tag, y = Jahr, W = Woche, H = Stunde, f = Minute, s = zweite
* Mn = Welcher Tag ist der positive Tag des Monats, MB = Welcher Tag ist der letzte Tag des Monats, wenn MB2 der zweite Tag des letzten ist
* W1..7 = Welchen Tag jeder Woche, Mn1W2 = In der ersten Woche des Monats, MB2W4 = Der zweite Donnerstag des Monats
* Der Wert nach W kann Multi-Werte sein, W135 ist Woche 1, Woche 3 und Freitag
* @param islunar
* Egal, ob es sich um einen Mondkalender handelt, der in den Gregorianischen Kalender verabschiedete Wert muss nach der Berechnung nach dem Mondkalender immer noch ein Solarkalender sein. Derzeit enthält der Mondkalender für Monate und Jahre unterschiedliche Berechnungen.
* @zurückkehren
*/
öffentliche statische Zeichenfolge nächste Time (String Strdate, int cyclePriod,
String Looppriod, boolean islunar) {
String returnValue = "";
int [] dates = dateUtils.gendate (strdate);
Chinesekalendar ccalendar = new Chinesecalendar ();
ccalendar.setgregorianyear (Daten [0]);
ccalendar.setgregorianghonth (Daten [1]);
ccalendar.setgregoriandate (Daten [2]);
if ("m" .equalSignoreCase (Looppriod)) // den Monat verarbeiten
{
if (islunar) {
für (int i = 0; i <cyclePriod; i ++) {
ccalendar.NextChinemonth ();
}
returnValue = dateUtils.gendate (ccalendar.getgregorianyear (),
ccalendar.getgregorianghonth (),
ccalendar.getGregoriandate ());
} anders {
returnValue = dateUtils.caldate (strdate, cyclePriod, 2);
}
} else if ("D" .EqualSignoreCase (Looppriod)) // Verarbeitungstag
{
returnValue = dateUtils.caldate (strdate, cyclePriod, 5);
} else if ("y" .EqualsignoreCase (Looppriod)) // Prozessjahr
{
if (islunar) {
ccalendar.addchineseyear (cyclePriod);
returnValue = dateUtils.gendate (ccalendar.getgregorianyear (),
ccalendar.getgregorianghonth (),
ccalendar.getGregoriandate ());
} anders {
returnValue = dateUtils.caldate (strdate, cyclePriod, 1);
}
} else if ("w" .EqualSignoreCase (Looppriod)) // Verarbeitungswoche
{
returnValue = dateUtils.caldate (strdate, cyclePriod, 3);
} else if ("H" .EqualsignoreCase (Looppriod)) // Verarbeitungszeiten
{
returnValue = timeutils.AddTime (strdate, 0, cyclePriod);
} else if ("f" .EqualsignoreCase (Looppriod)) // Protokolle verarbeiten
{
returnValue = timeutils.AddTime (strdate, 1, cyclePriod);
} else if ("S" .EqualSignoreCase (Looppriod)) // Sekunden verarbeiten
{
returnValue = timeutils.AddTime (strdate, 2, cyclePriod);
} else // unkonventionelle Zyklen behandeln
{
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 = GetBackWeekday (Strdate, mnbValue,
wnbValue);
}
} anders {
mnbValue = Integer.ParseInt (Looppriod.Substring (2,
Looppriod.length ())) - 1;
if ("n" .EqualSignoreCase (mnb)) {
returnValue = CALDATE (GIVONTAMETHFIRST (strdate),
MnbValue, 5);
} else if ("b" .EqualSignoreCase (MNB)) {
returnValue = CALDATE (Givemonthlast (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 (wahr) {
Strdate = CALDATE (strdate, 1, 5);
if (Woche.Indexof (String.Valueof (GetWeekday (strdate)))> = 0) {
returnValue = strdate;
brechen;
}
}
}
}
return returnValue;
}