Фестивали, такие как День отца и День матери, можно рассчитать, или они могут быть определены как лучшая пятница каждого месяца, чтобы облегчить организацию встреч.
Кода -копия выглядит следующим образом:
/**
*
* @param strdate
* Дата начала, формат yyyy-mm-dd HH: MM: SS
* @param CyclePriod
* Повторный интервал
* @param looppriod
* Повторите тип, m = месяц, d = день, y = год, w = неделя, h = час, f = минута, s = второй
* Mn = какой день является положительным днем месяца, MB = какой день последний день месяца, если MB2 - второй день последнего
* w1..7 = какой день каждой недели, Mn1w2 = первая неделя месяца, MB2W4 = второй четверг месяца
* Значение после W может быть многоцветными, W135 представляет собой неделю 1, неделю 3 и пятницу
* @param Islunar
* Будь то лунный календарь, стоимость, передаваемая в солнечном календаре, и возвращенный григорианский календарь по -прежнему остается солнечным календарем после расчета в соответствии с лунным календарем. В настоящее время лунный календарь имеет различные расчеты в течение нескольких месяцев и лет.
* @возвращаться
*/
Public Static String в следующий раз (String Strdate, Int CyclePriod,
String Looppriod, Boolean Islunar) {
String returnValue = "";
int [] dates = dateutils.gendate (strdate);
Chinesecalendar ccalendar = new Chinesecalendar ();
ccalendar.setgregorianyear (даты [0]);
ccalendar.setgregorianmonth (даты [1]);
ccalendar.setgregoriandate (даты [2]);
if ("m". Equalsignorecase (looppriod)) // Обработка месяца
{
if (islunar) {
для (int i = 0; i <cycleproid; i ++) {
ccalendar.nextchinesemonth ();
}
returnValue = dateUtils.gendate (ccalendar.getgregorianyear (),
ccalendar.getGregorIanMonth (),
ccalendar.getgregoriandate ());
} еще {
returnValue = dateUtils.caldate (Strdate, CyclePriod, 2);
}
} else if ("d". EqualsIgnoreCase (loopproid)) // День обработки
{
returnValue = dateUtils.caldate (Strdate, CyclePriod, 5);
} else if ("y". EqualsIgnoreCase (looppriod)) // Год процесса
{
if (islunar) {
ccalendar.addchineseyear (cycleproid);
returnValue = dateUtils.gendate (ccalendar.getgregorianyear (),
ccalendar.getGregorIanMonth (),
ccalendar.getgregoriandate ());
} еще {
returnValue = dateUtils.caldate (Strdate, CyclePriod, 1);
}
} else if ("w". Equalsignorecase (loopproid)) // неделя обработки
{
returnValue = dateUtils.caldate (Strdate, CyclePriod, 3);
} else if ("h". EqualsIgnoreCase (looppriod)) // Часы обработки
{
returnValue = timeUtils.addtime (strdate, 0, cyclepriod);
} else if ("f". equalsignorecase (looppriod)) // Протокол обработки
{
returnValue = timeUtils.addtime (strdate, 1, cycleproid);
} else if ("s". equalsignorecase (loopproiod)) // Обработка секунд
{
returnValue = TimeUtils.AddTime (Strdate, 2, CyclePriod);
} else // обрабатывать нетрадиционные циклы
{
if ("M". EqualsIgnoreCase (stringUtils.left (looppriod, 1))) {
String mnb = loopproid.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);
}
} еще {
mnbvalue = integer.parseint (looppriod.substring (2,
looppriod.length ())) - 1;
if ("n". Equalsignorecase (mnb)) {
returnValue = caldate (givemonthfirst (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 (true) {
strdate = caldate (strdate, 1, 5);
if (week.indexof (string.valueof (getweekday (strdate)))> = 0) {
returnValue = strDate;
перерыв;
}
}
}
}
returnValue;
}