2016-05-02 5 views
0

私は数ヶ月の配列を持っています。今私は日付でフィールドを更新したいと思いますが、私はこのための12の異なるifステートメントを作成したくありません。私の他の選択肢は何ですか?あなたは文字列形式を使用して、月の挿入、それを認識することができ、例えばPowershellで日付を更新する

if(month=1) 
{ $item["RequestDate"] = "1/31/2016"} 
if(month=2) 
{...} 
if(month=3) 
{...} 

実際のコード

$MonthArray = @("1", "2", "3", "4", "5", "6") 

for($i=0; $i -lt $MonthArray.length; $i++) 
{ 
    if($i="1") 
    { 
    $item["RequestedDate"] = "01/31/2016" 
    } 

} 

答えて

2

一つの方法は、このコードは、あなたが興味を持っている日付を前提とし、この

$MonthArray = @("1", "2", "3", "4", "5", "6") 
$year = '2016' 

foreach ($month in $MonthArray) { 

$start_date = Get-Date -Format 'MM/dd/yyyy' -Day ([datetime]::DaysInMonth($year, $month)) -Month $month -Year $year 
$start_date 
} 

ある月の最後の日で、今年。これをさらに数ヶ月間必要とする場合、これは$ MonthArray変数内で引き続き拡張することができますが、これ以上の時間がかかると追加のループが必要になります。

+0

WOW。完璧。ありがとう、マーティン。これは簡単だろうとは思わなかった。 –

2

を(私は行番号を最小化しようとした作品を書いたが、コードは) 31. feb +これらの日付のいくつかは存在しません。

$MonthArray = @(1, 2, 3, 4, 5, 6) 

for($i=0; $i -lt $MonthArray.length; $i++) 
{ 
    #$item["RequestedDate"] = "{0:00}/31/2016" -f $MonthArray[$i] 
    "{0:00}/31/2016" -f $MonthArray[$i] 
} 

は出力:

01/31/2016 
02/31/2016 
03/31/2016 
04/31/2016 
05/31/2016 
06/31/2016 

または日時・オブジェクトを使用しました。これは、無効な日付で失敗しますので、私は毎月16を使用する:これを行うには

$MonthArray = @(1, 2, 3, 4, 5, 6) 

for($i=0; $i -lt $MonthArray.length; $i++) 
{ 
    #$date = [datetime]"$($MonthArray[$i])/16/2016" 
    $date = New-Object datetime -ArgumentList 2016, ($MonthArray[$i]), 16 
    $date.ToString("MM/dd/yyyy", [cultureinfo]::InvariantCulture) 
} 
+0

あなたの投稿に感謝します。私はちょうどそれが短いので、私はちょうどマーティンのポストを使用ピッチングのためにもう一度おねがいします。 –

+0

問題ありません。これを1行にすることもできますが、読みやすくて短いコードです。 :-) –