เทศกาลเช่นวันพ่อและวันแม่สามารถคำนวณได้หรือพวกเขาสามารถกำหนดเป็นวันศุกร์ที่ดีที่สุดของแต่ละเดือนเพื่ออำนวยความสะดวกในการจัดประชุม
การคัดลอกรหัสมีดังนี้:
-
-
* @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
* ไม่ว่าจะเป็นปฏิทินจันทรคติค่าที่ส่งผ่านจะต้องเป็นปฏิทินพลังงานแสงอาทิตย์และปฏิทิน Gregorian ที่ส่งคืนยังคงเป็นปฏิทินพลังงานแสงอาทิตย์หลังจากการคำนวณตามปฏิทินจันทรคติ ปัจจุบันปฏิทินจันทรคติมีการคำนวณที่แตกต่างกันสำหรับเดือนและปี
* @กลับ
-
สตริงคงที่สาธารณะต่อไป (String strdate, int cyclepriod,
String looppriod, boolean islunar) {
สตริง returnValue = "";
int [] วันที่ = 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 <cyclepriod; i ++) {
ccalendar.nextchinesemonth ();
-
returnValue = dateutils.gendate (ccalendar.getGregorianyear ()
ccalendar.getGregorianmonth ()
ccalendar.getGregoriandate ());
} อื่น {
returnValue = dateutils.caldate (strdate, cyclepriod, 2);
-
} อื่นถ้า ("d" .equalsignorecase (looppriod)) // วันประมวลผล
-
returnValue = dateutils.caldate (strdate, cyclepriod, 5);
} อื่นถ้า ("y" .equalsignorecase (looppriod)) // ปีกระบวนการ
-
if (iSlunar) {
ccalendar.addchineseyear (CyclePriod);
returnValue = dateutils.gendate (ccalendar.getGregorianyear ()
ccalendar.getGregorianmonth ()
ccalendar.getGregoriandate ());
} อื่น {
returnValue = dateutils.caldate (strdate, cyclepriod, 1);
-
} อื่นถ้า ("w" .EqualSignorecase (looppriod)) // สัปดาห์การประมวลผล
-
returnValue = dateutils.caldate (strdate, cyclepriod, 3);
} อื่นถ้า ("h" .equalsignorecase (looppriod)) // ชั่วโมงการประมวลผล
-
returnValue = timeUtils.addtime (strdate, 0, cyclepriod);
} อื่นถ้า ("f" .equalsignorecase (looppriod)) // นาทีการประมวลผล
-
returnValue = timeUtils.addtime (strdate, 1, cyclepriod);
} อื่นถ้า ("s" .equalsignorecase (looppriod)) // กระบวนการวินาทีกระบวนการ
-
returnValue = timeUtils.addtime (strdate, 2, cyclepriod);
} อื่น // จัดการวงจรที่ไม่เป็นทางการ
-
if ("m" .equalsignorecase (stringutils.left (looppriod, 1))) {
สตริง mnb = looppriod.substring (1, 2);
สตริง 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);
} อื่นถ้า ("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);
} อื่นถ้า ("b" .equalsignorecase (mnb)) {
returnValue = caldate (givemonthlast (strdate),
-mnbvalue, 5);
-
-
} อื่นถ้า ("w" .equalsignorecase (stringutils.left (looppriod, 1))) {
String Week = StringUtils.right (LoopPriod,
looppriod.length () - 1);
strdate = caldate (strdate, cyclepriod - 1, 3);
ในขณะที่ (จริง) {
strdate = caldate (strdate, 1, 5);
if (week.indexof (string.valueof (getweekday (strdate)))> = 0) {
returnValue = strdate;
หยุดพัก;
-
-
-
-
returnValue;
-