我有一个数月的阵列。现在我想用日期更新一个字段,但我不想为此创建12个不同的if语句。我的另一个选择是什么? (我写的代码有效,但试图最小化行数)
例如,
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"
}
}
答案 0 :(得分: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
或使用datetime-objects。这将失败,日期无效,所以我每个月使用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)
}
答案 1 :(得分: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变量中扩展,但是多年来这将需要额外的循环。