Festival seperti Hari Ayah dan Hari Ibu dapat dihitung, atau mereka dapat didefinisikan sebagai hari Jumat terbaik setiap bulan untuk memfasilitasi pengaturan pertemuan.
Salinan kode adalah sebagai berikut:
/**
*
* @param strdate
* Tanggal mulai, format yyyy-mm-dd hh: mm: ss
* @param Cyclepriod
* Ulangi interval
* @param looppriod
* Tipe Ulangi, m = bulan, d = hari, y = tahun, w = minggu, h = jam, f = menit, s = kedua
* mn = hari apa hari positif bulan itu, mb = hari apa hari terakhir bulan itu, jika mb2 adalah hari kedua yang terakhir
* W1..7 = hari apa setiap minggu, mn1w2 = minggu pertama bulan itu, mb2w4 = Kamis kedua bulan itu
* Nilai setelah W dapat berupa nilai-nilai, W135 mewakili Minggu 1, Minggu 3, dan Jumat
* @param Islunar
* Apakah itu kalender lunar, nilai yang dilewati harus menjadi kalender matahari, dan kalender Gregorian yang dikembalikan masih merupakan kalender matahari setelah perhitungan sesuai dengan kalender lunar. Saat ini, kalender lunar memiliki perhitungan yang berbeda selama berbulan -bulan dan bertahun -tahun.
* @kembali
*/
String statis publik berikutnya (string strdate, int siklus,
String LoopPriod, Boolean Islunar) {
String returnValue = "";
int [] tanggal = dateutils.gendate (strdate);
Chinesecalendar ccalendar = chinesecalendar baru ();
ccalendar.setgregorianyear (tanggal [0]);
ccalendar.setgregorianmonth (tanggal [1]);
ccalendar.setgregoriandate (tanggal [2]);
if ("m" .equalsignorecase (looppriod)) // memproses bulan
{
if (islunar) {
untuk (int i = 0; i <cyclePriod; i ++) {
ccalendar.nextchinesemonth ();
}
returnValue = dateutils.gendate (ccalendar.getgregorianyear (),
ccalendar.getgregorianmonth (),
ccalendar.getgregoriandate ());
} kalau tidak {
returnValue = dateutils.caldate (strdate, siklus, 2);
}
} lain jika ("d" .equalsignorecase (looppriod)) // hari pemrosesan
{
returnValue = dateutils.caldate (strdate, siklus, 5);
} lain jika ("y" .equalsignorecase (looppriod)) // tahun proses
{
if (islunar) {
ccalendar.addchineseyear (cyclePriod);
returnValue = dateutils.gendate (ccalendar.getgregorianyear (),
ccalendar.getgregorianmonth (),
ccalendar.getgregoriandate ());
} kalau tidak {
returnValue = dateutils.caldate (strdate, siklus, 1);
}
} lain jika ("w" .equalsignorecase (looppriod)) // minggu pemrosesan
{
returnValue = dateutils.caldate (strdate, siklus, 3);
} lain jika ("h" .equalsignorecase (looppriod)) // jam pemrosesan
{
returnValue = timeutils.addtime (strdate, 0, cyclePriod);
} lain jika ("f" .equalsignorecase (looppriod)) // risalah pemrosesan
{
returnValue = timeutils.addtime (strdate, 1, cyclepriod);
} lain jika ("s" .equalsignorecase (looppriod)) // proses detik
{
returnValue = timeutils.addtime (strdate, 2, cyclepriod);
} else // menangani siklus yang tidak konvensional
{
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);
}
} kalau tidak {
mnbvalue = integer.parseint (looppriod.substring (2,
looppriod.length ())) - 1;
if ("n" .equalsignorecase (mnb)) {
returnValue = caldate (givemontthfirst (strdate),
mnbvalue, 5);
} else if ("b" .equalSignorecase (mnb)) {
returnValue = caldate (givemonthlast (strdate),
-mnbvalue, 5);
}
}
} else if ("w" .equalSignorecase (stringutils.left (looppriod, 1))) {
String minggu = stringutils.right (looppriod,
looppriod.length () - 1);
strdate = caldate (strdate, siklus - 1, 3);
while (true) {
strdate = caldate (strdate, 1, 5);
if (week.indexof (string.valueof (getWeekday (strdate)))> = 0) {
returnValue = strdate;
merusak;
}
}
}
}
Return ReturnValue;
}