如何使用PowerShell查找下一個工作日?Powershell高爾夫:下一工作日
回答
這是很短過(但使用別名):
,(1,2-eq7-(date).dayofweek)|%{(date)+"$(1+$_[0])"}
在一個單獨的語句:
(date)+"$(1+$(@(1,2-eq7-(date).dayofweek)))"
對這種做法的幾個注意事項:
在Powershell(v1至少),比較無線個集合返回項目,其中條件爲真,例如:
PS> 1,2 -eq 1
PS> 1
我走的事實,即該規則
today + 1
實際例外來計算下一工作日僅星期五(+3天)和星期六(+2天)。
那麼,我的手機允許我設置哪些日子是營業日,但Windows/.NET不會,所以我假設星期一到星期五。
注意:由於問題包含「高爾夫」,因此我正在打高爾夫球這一項,即嘗試儘可能少地使用字節。代碼不一定可讀。
做的最簡單,最直接的方法是將與今天開始,增加了一天,看看它是否在所期望的範圍:
PS> $d = [DateTime]::Now.AddDays(1); while ($d.DayOfWeek -eq "Saturday" -or $d.DayOfWeek -eq "Sunday") { $d = $d.AddDays(1) }; $d
Montag, 22. Juni 2009 19:50:27
我們可以縮短這一點,雖然:
PS> $d=(Get-Date)+"1";for(;6,0-contains$d.DayOfWeek){$d+="1"}$d
Montag, 22. Juni 2009 19:52:31
但是我們也可以嘗試不同的方式,使用管道。在第二個工作日至少一個和最多三個天了,這樣我們就可以產生可能的日期的列表,並相應地進行篩選,最後,選擇第一個:
PS> @(1..3|%{(Get-Date).AddDays($_)}|?{$_.DayOfWeek -ge "Monday" -and $_.DayOfWeek -le "Friday"})[0]
Montag, 22. Juni 2009 22:11:19
或更短:
PS> @(1..3|%{(Get-Date)+"$_"}|?{1..5-contains$_.DayOfWeek})[0]
Montag, 22. Juni 2009 19:55:53
通過讓範圍內去4我們可以保證它總是返回至少兩個工作日,節省@操作符來強制數組:
PS> (1..4|%{(Get-Date)+"$_"}|?{1..5-contains$_.DayOfWeek})[0]
Montag, 22. Juni 2009 20:24:06
這裏是另一個pipline方法:
(@(1..4) | foreach { if (([datetime]::Now.AddDays($_)).DayOfWeek -ne "Sunday" -and ([datetime]::Now.AddDays($_)).DayOfWeek -ne "Saturday") {[datetime]::Now.AddDays($_); }})[0]
不知道爲什麼,我卻用(1..4)來代替(1..3)。
好吧,這很明顯。如果當天是星期五,那麼只會得到一個結果(下星期一),它將作爲單個對象返回,而不是作爲數組返回,這就是爲什麼您無法使用[0]索引它的原因。順便說一句,當你使用1..4(你可以放下@()時,你會得到兩個日期,也就是你可以選擇第一個日期的數組。另一個選擇是將@()放在完整的語句中(請參閱我的答案)以強制一個數組(即使只有一個項目),您可以在其中再次使用[0]。 – Joey 2009-06-19 20:08:07
我發現第一個答案中的示例代碼非常難以遵循,因此我重寫了它,以便更容易地看到發生了什麼。我仍然使用-eq行爲,其中-eq測試將返回匹配值。
$date = get-date "2013 Apr 24"
write-host "Based on your date"
$date
write-host "next business day (skipping saturday and sunday)"
$Date.AddDays(1 + $(1,2 -eq 7 - [int]$date.dayofweek))
write-host "Next week monday"
$Date.AddDays(1 + $(0,1,2,3,4,5,6,7 -eq 7 - [int]$date.dayofweek))
- 1. 智能數獨高爾夫
- 2. 高爾夫障礙網站
- 3. 高爾夫比分計劃?
- 4. 高爾夫SQL問題
- 5. 計算下一工作日
- 6. 高爾夫球記錄器PHP,MYSQL,AJAX
- 7. 高爾夫球得分SQL查詢
- 8. 記錄高爾夫球杆的方法
- 9. 高爾夫球場信息API?
- 10. mySQL高爾夫分數據庫方案
- 11. 如何爲工作座位安排生成「社交高爾夫球員」矩陣?
- 12. 代碼高爾夫簡單一條語句一次跳過
- 13. 鮑爾包不工作在崇高
- 14. 如何構建一個簡單的HTML5高爾夫遊戲?
- 15. Vba下一工作日包括假期
- 16. 下個月的第一個工作日
- 17. 找到下一個工作日
- 18. 下一個工作日使用Oracle schdule
- 19. 確定下一個工作日
- 20. Autosys下一輪工作的日期
- 21. Powershell我沒有得到日誌工作
- 22. 隱馬爾可夫模型工具:Jahmm
- 23. assoc和ftype不能在Powershell下工作
- 24. 隱馬爾可夫模型預測下一個觀察
- 25. 正則表達式高爾夫:切斷一切後,最後一個「/」
- 26. 在JavaScript中從工作日獲取下一個日期
- 27. 在oracle中給出日期的下一個工作日
- 28. 得到下一個工作日的日期
- 29. 日期時間的Python - 下一工作日
- 30. 給定日期的下一工作日在PHP
我喜歡那些流水線版本,前兩個版本有兩種說法,非常感謝 – m1k4 2009-06-19 23:14:40
好了,不知道有多條語句是被禁止的。 – Joey 2009-06-19 23:55:19