2016-06-01 6 views
1

다음 테스트 코드가 있습니다. 기본적으로 폴더에 새 파일이 만들어 졌는지 확인하고 있습니다. 파일이 오후 4시 이후에 작성된 경우 다음 영업일을 표시해야한다는 것을 알아야합니다. 현재 내 코드는 다음날 표시되지만 다음 영업일을 표시해야합니다. 어떤 도움을 주시면 감사하겠습니다.powershell에서 다음 영업일을 얻는 방법

$formatteddate = "{0:h:mm:ss tt}" -f (get-date) 

if ($formatteddate -gt "4:00:00 PM"){ 
$(Get-Date).AddDays(1).ToString('MMM d yyyy') 
} 
+0

을 당신은 월요일 의미 - 금요일 ? 휴일로 어떻게 일합니까? –

+1

이것은 다음과 같은 경우에 유용 할 수 있습니다. https://www.reddit.com/r/PowerShell/comments/4j9usl/getdate_next_business_day/ –

답변

3

"업무 일"은 조직마다 다릅니다. 일부 조직은 다른 조직에서하는 공휴일에는 업무를 수행하지 않습니다. 당신은 휴일을 처리하려면 올바르게 (OP 이해 보인다) 형식의 세부 사항을 생략 비즈니스

을 위해 휴일의 명시 적 목록을해야이 그것을 수행해야합니다

# $date is input date 
$nextBizDay = $date.adddays(1) 

# You would probably want to generate the follow list programmatically, 
# instead of manually as done here 
$holidays = 1, <# New Years #> 
      18, <# MLK day 2016 #> 
       <# other holidays encoded as Day Of Year #> 
      360 <# Christmas in a Leap Year #> 
# An alternative to a list of holidays like this is to find a web service 
# you can query to get the holidays for a given year 

while ($nextBizDay.DayOfWeek -eq 'Saturday' -or 
     $nextBizDay.DayOfWeek -eq 'Sunday' -or 
     $nextBizDay.DayOfYear -in $holidays) { 
    if ($nextBizDay.DayOfYear -gt 366) { 
    throw "No next business day this year. Need to add additional logic" 
    } 
    $nextBizDay = $nextBizDay.adddays(1) 
} 
+0

공휴일에 대해별로 염려하지 않지만 다음 코드를 사용하여 다음 영업일을 가질 수있었습니다. $ (get-date) if ($ formatteddate -gt "4:00:00 PM") { $ (Get-Date). AddDays (1 + $ (1,2 -eq 7 - [int] $ formatteddate.dayofweek)) .ToString ('MMM d yyyy') } – SikRikDaRula

+0

@SikRikDaRula 작동하지 않아야합니다. '$ formatteddate'를 문자열로 정의하므로 참조 할 'dayofweek' 속성이 없습니다. – TheMadTechnician

+0

그것은 나를 위해 잘 작동, 아픈 금요일 진정으로 그것을 테스트하기 위해 기다려야한다 – SikRikDaRula

관련 문제