매주 월요일 기념일(평일)을 지정할 수 있을까요?
월요일이 휴일이면 화요일에 기념일을 지정하고요.
월요일, 화요일에 다 휴일이면 수요일에 기념일을 지정하고요.
이런식으로 휴일 다음날 기념일을 지정할 수 있을까요?
2021.11.10 17:11
2021.11.11 16:27
글을 등록하는게 아니라 위 글에 "임산부의날"처럼 기념일로 날짜 밑에 써있으면 좋을듯 한데요~~ 그건 안될까요???
2021.11.11 18:03
밥탱 님 안녕하세요,
가능할 겁니다.
다만 기념일 반복주기가 특이하여 플래너 자체 함수에는 포함하지 않을 생각이니,
다른분에게 제작의뢰 하시기 바랍니다.
감사합니다.
ksc
2021.11.12 10:46
넵. 알겠습니다.
2021.11.12 13:21
밥탱 님 안녕하세요,
확인글 감사합니다.
ksc
2021.11.26 09:15
1. class.planner123_holiday_kor.php 파일을 수정해서 아래와 같이 하니
토,일요일 제외하고 매월 마지막 평일에 표시되기는 하는데, 공휴일은 그냥 표시되네요.
매월 마지막 평일이 공휴일이면 전날에 표시되게 할 수 있을까요?
// 매월, 마지막 평일 형식 기념일 설정
For($x = $sMMCount; $x <= $eMMCount; $x++) {
$wrkYY = floor(($x-1)/12); // 년
$wrkMM = ($x-1)%12 + 1; // 월
$wrkDD = date("t", mktime(0, 0, 0,$wrkMM, 1, $wrkYY)); // 일
$dummy_ind = "";
$arr_holiday = $Holiday;
For($y = 0; $y <= 6; $y++) {
if($dummy_ind != "Z") {
if($arr_holiday[$wrkMM][$wrkDD-$y] == "") {
$week_seq = date("w", mktime(0, 0, 0, $wrkMM, $wrkDD-$y, $wrkYY));
if($week_seq >= 1 && $week_seq <= 5) {
$aHoli[$wrkMM][$wrkDD-$y] .= " <font color=brown>입력 확인<br></font>";
$dummy_ind = "Z";
}
}
}
}
}
2. 아래와 같이 하니 매주 월요일에 표시되기는 하는데
공휴일이 월요일이면 화요일에, 월요일/화요일이 공휴일이면 수요일에 표시되게 할 수 있을까요?
// 매월, 몇번째 무슨요일 형식 2개 이상 기념일 설정 (예-옵션만기일: 매월 2번째 목요일)
For($x = $sMMCount; $x <= $eMMCount; $x++) {
$wrkYY = floor(($x-1)/12); // 년
$wrkMM = ($x-1)%12 + 1; // 월
$wrkDD = $startDD; // 일
$temp01 = explode("-",planner123_main::fn_nsweekday($wrkYY, $wrkMM, 1, 1));
$temp02 = explode("-",planner123_main::fn_nsweekday($wrkYY, $wrkMM, 2, 1));
$temp03 = explode("-",planner123_main::fn_nsweekday($wrkYY, $wrkMM, 3, 1));
$temp04 = explode("-",planner123_main::fn_nsweekday($wrkYY, $wrkMM, 4, 1));
$temp05 = explode("-",planner123_main::fn_nsweekday($wrkYY, $wrkMM, 5, 1));
$tmp_stamp01 = mktime(0,0,0,$temp01[1],$temp01[2],$temp01[0]);
$tmp_stamp02 = mktime(0,0,0,$temp02[1],$temp02[2],$temp02[0]);
$tmp_stamp03 = mktime(0,0,0,$temp03[1],$temp03[2],$temp03[0]);
$tmp_stamp04 = mktime(0,0,0,$temp04[1],$temp04[2],$temp04[0]);
$tmp_stamp05 = mktime(0,0,0,$temp05[1],$temp05[2],$temp05[0]);
if($tmp_stamp01|$tmp_stamp02|$tmp_stamp03|$tmp_stamp04|$tmp_stamp05 >= $dispStart_stamp && $tmp_stamp01|$tmp_stamp02|$tmp_stamp03|$tmp_stamp04|$tmp_stamp05 <= $dispEnd_stamp){
$aHoli[$temp01[1]][$temp01[2]] .= " <font color=brown>(~08:30)입력해주세요<br></font>";
$aHoli[$temp02[1]][$temp02[2]] .= " <font color=brown>(~08:30)입력해주세요<br></font>";
$aHoli[$temp03[1]][$temp03[2]] .= " <font color=brown>(~08:30)입력해주세요<br></font>";
$aHoli[$temp04[1]][$temp04[2]] .= " <font color=brown>(~08:30)입력해주세요<br></font>";
$aHoli[$temp05[1]][$temp05[2]] .= " <font color=brown>(~08:30)입력해주세요<br></font>";
}
}
2021.11.28 15:01
밥탱 님 안녕하세요,
아래와 같이 해보세요.
1) class.planner123_main.php 파일에 아래함수 추가 (예: V5.10.1 파일이면 1288~1289라인 사이)
//------------------------------------------------------------------------
/**
* @brief: 주단위 같은 요일의 기념일 단, 그날이 공휴일/일요일 이면 다음날자로.
* @param $mem_weekday: 일=0, 월=1, .. 토=6.
* @return array
**/
function fn_addSpecialMemday($mem_weekday, $mem_desc, $dispStart_stamp, $dispEnd_stamp, $holiday , $memday) {
$dispStart_stamp -= 86400 * 2; //연휴를 고려하여 2일 이전부터 계산
$dispEnd_stamp += 86400 * 2; //연휴를 고려하여 2일 이후 까지 계산
$tmp_sdt = explode("-",date("Y-n-j", $dispStart_stamp));
list($sYear, $sMonth, $sDay) = explode("-",date("Y-n-j", $dispStart_stamp));
list($eYear, $eMonth, $eDay) = explode("-",date("Y-n-j", $dispEnd_stamp));
$jd_start = gregoriantojd($sMonth, $sDay, $sYear); // 시작 일자 jd
$jd_end = gregoriantojd($eMonth, $eDay, $eYear); // 종료 일자 jd
$sWeekday = date("w", $dispStart_stamp);
if ($mem_weekday < $sWeekday) {
$wk_gap = $mem_weekday + 7 - $sWeekday;
} else {
$wk_gap = $mem_weekday - $sWeekday;
}
$wk_jd_start = $jd_start + $wk_gap;
for($JD = $wk_jd_start; $JD < $jd_end; $JD += 7) {
for($i=0; $i<6; $i++) {
list($month, $day, $year) = explode('/', jdtogregorian($JD+$i));
if (!$holiday[$month][$day]) {
$memday[$month][$day] .= $mem_desc;
break;
}
}
}
return $memday;
}
//------------------------------------------------------------------------
/**
* @brief: 매월 말일 기념일 단, 그날이 공휴일/일요일/토요일 이면 그 이전날자로.
* @param
* @return array
**/
function fn_addMonthEndMemday($mem_desc, $dispStart_stamp, $dispEnd_stamp, $holiday , $memday) {
$dispStart_stamp -= 86400 * 2; //연휴를 고려하여 2일 이전부터 계산
$dispEnd_stamp += 86400 * 2; //연휴를 고려하여 2일 이후 까지 계산
$tmp_sdt = explode("-",date("Y-n-j", $dispStart_stamp));
list($sYear, $sMonth, $sDay) = explode("-",date("Y-n-j", $dispStart_stamp));
list($eYear, $eMonth, $eDay) = explode("-",date("Y-n-j", $dispEnd_stamp));
$mm_cnt = ($eYear*12 + $eMonth) - ($sYear*12 + $sMonth) + 1;
for($i = 0; $i < $mm_cnt; $i++) {
$yy = $sYear;
$mm = $sMonth + $i;
if ($mm >= 13){
$yy = $eYear;
$mm = $mm - 12;
}
$d = date("t", mktime(0, 0, 0, $mm, 1, $yy));
$JD = gregoriantojd($mm, $d, $yy);
for($k=0; $k<6; $k++) {
list($month, $day, $year) = explode('/', jdtogregorian($JD - $k));
$weekDay = date("w", mktime(0, 0, 0, $month, $day, $year));
if (!$holiday[$month][$day] && $weekDay != 0 && $weekDay != 6) {
$memday[$month][$day] .= $mem_desc;
break;
}
}
}
return $memday;
}
2) _get_schedule.html 파일(V5.10.1) 281~282 라인 사이에 아래 붉은색 코드 추가.
<!--@if($module_info->display_memday == 'Y')--><!--// 기념일표시-->
{@ $Memday = $oPlanner123_main->fn_getMemdayByCountry($skinpath.'function/', $holiday_country_code, $dispStart_stamp, $dispEnd_stamp, $board_holiday);}
{@ $ind_memday = "Y";}
{@
// 매주 특정 요일을 기념일로 (공휴일 이면 다음 날자로)
$mem_weekday = 1; //일=0, 월=1... 토=6
$mem_desc = ' 매月요일기념일';
$Memday = $oPlanner123_main->fn_addSpecialMemday($mem_weekday, $mem_desc, $dispStart_stamp, $dispEnd_stamp, $Holiday , $Memday);
}
{@
// 매월 말일에 기념일 추가 (공휴일/일요일/토요일 이면 이전 날자로)
$mem_desc = ' 매월말일기념일';
$Memday = $oPlanner123_main->fn_addMonthEndMemday($mem_desc, $dispStart_stamp, $dispEnd_stamp, $Holiday , $Memday);
}
<!--@end-->
감사합니다.
ksc
2021.11.30 16:24
와우~~ 잘 되네요~~ 감사합니다.^^
2021.11.30 21:06
밥탱 님 안녕하세요,
확인글 감사합니다.
ksc
밥탱 님 안녕하세요,
매주 월요일 기념일(평일)을 지정할 수 있을까요?
월요일이 휴일이면 화요일에 기념일을 지정하고요. 월요일, 화요일에 다 휴일이면 수요일에 기념일을 지정하고요.
이런식으로 휴일 다음날 기념일을 지정할 수 있을까요?
기념일 함수에 위와같은 방법으로 기념일을 적용하는것은 간단치 않습니다.
일정의 반복 단위를 이용하여 처리하는 것이 적절할것 같으니 아래와 같이 변경해놓고 결과를 한번 보시기 바랍니다.
감사합니다.
ksc
---아래---
1) class.planner123_main.php 파일(V5.10.1) 782~783번 라인 사이에 아래 붉은색 코드 추가
break;
// unit 값이 11.일(간격) : 몇일 간결으로 반복(일요일/공휴일이면 다음날로)*****
case '11':
For ($x = $dsp_start_jd; $x <= $dsp_end_jd; $x++) {
if ((($x - $plan_start_jd) % $plan_repeat_cycle) == 0) {
if ($x >= $plan_start_jd && $x <= $plan_end_jd) {
if (function_exists('jdtogregorian')) {
$wrk_date = jdtogregorian($x);
} else {
$wrk_date = planner123_main::fn_calcJDToGregorian($x);
}
$wrk_arr = explode('/', $wrk_date);
$wk_yy = $wrk_arr[2];
$wk_mm = $wrk_arr[0];
$wk_dd = $wrk_arr[1];
$wrk_holiday = $Holiday;
for ($x_8 = 0; $x_8<7; $x_8++) {
$wrk_stmp_8 = mktime(0, 0, 0, $wk_mm, $wk_dd+$x_8 ,$wk_yy);
$wrkYY_8 = date("Y", $wrk_stmp_8); // 일자-년
$wrkMM_8 = date("n", $wrk_stmp_8); // 일자-월
$wrkDD_8 = date("j", $wrk_stmp_8); // 일자-일
$wrk_yoil_8 = date("w", $wrk_stmp_8);
if ($wrk_yoil_8 != 0 && !$wrk_holiday[$wrkMM_8][$wrkDD_8] ) {
$aHoli[$wrkMM_8][$wrkDD_8] = $wrkYY_8;
break;
}
}
}
}
}
break;
// 2.개월(날자): 반복월 같은 날자**********************************************
case '2':
2) 게시판관리 -> 확장변수 -> 6번 "반복단위" 의 기본값에 아래 노란색 부분 추가
,1.일(단위),11.일(단위-공휴일이면 다음날),2.월(같은날),3.월(n번째요일),4.월(n주차 x요일),5.월(말일),6.월(말일부터 n번째요일),7.월(음력: 같은날자),8.월(음력: n주차 x요일),9.월(같은날:세금납부-토요일 일요일이면 다음날),10.월(첫 일요일부터 첫주 시작해서 n번째 주 x요일)
3) 샘플 이미지
일정입력:
결과:
---- 끝---