2016-06-01 5 views
1

У меня есть следующий тестовый код. В основном я проверяю, когда в папке создается новый файл. Мне нужно знать, что если файл был создан после отображения 4pm на следующий рабочий день. В настоящее время мой код отображается на следующий день, но мне нужно отобразить следующий рабочий день. Любая помощь будет оценена по достоинству.Как получить следующий рабочий день в 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

Добавление к тому, что сказал jisaak: «рабочий день» относится к организации. Некоторые организации не работают на праздники, которые делают другие организации. Если вы хотите обрабатывать отпуск правильно, вы будете нуждаться в поименный список праздников для вашего бизнеса

Опуская детали форматирования (что 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

не так беспокоился о праздниках, но я смог получить следующий рабочий день с этим кодом как well '$ formatteddate =" {0: h: mm: ss tt} "-f (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

Смежные вопросы