Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将字符串数组转换为日期时间_Arrays_Powershell_Loops - Fatal编程技术网

Arrays 将字符串数组转换为日期时间

Arrays 将字符串数组转换为日期时间,arrays,powershell,loops,Arrays,Powershell,Loops,我有一个字符串正在转换为datetime格式,效果很好: $d = 'hourly-12-18-2017-20-15-00' -split '-' 让我明白: hourly 12 18 2017 20 15 00 18. december 2017 20:15:00 18. december 2017 20:15:00 将其转换为日期时间 $i = Get-Date -Day $d[2] -Month $d[1] -Year $d[3] -Hour $d[4] -Minute $d[5]

我有一个字符串正在转换为datetime格式,效果很好:

$d = 'hourly-12-18-2017-20-15-00' -split '-'
让我明白:

hourly
12
18
2017
20
15
00
18. december 2017 20:15:00
18. december 2017 20:15:00
将其转换为日期时间

$i = Get-Date -Day $d[2] -Month $d[1] -Year $d[3] -Hour $d[4] -Minute $d[5] -Second $d[6]
让我明白:

hourly
12
18
2017
20
15
00
18. december 2017 20:15:00
18. december 2017 20:15:00
这正是我所期望的,而且是有效的

现在实际上这是一个字符串列表,所以我试图循环通过它。 转换后的实际列表:

 hourly
 12
 28
 2017
 10
 15
 00
 hourly
 12
 28
 2017
 11
 15
 02
等等

我正试着把这些格式写出来:

foreach ($i in $d) {

$i = @(Get-Date -Day $d[2] -Month $d[1] -Year $d[3] -Hour $d[4] -Minute $d[5] -Second $d[6])
$i
}
让我明白:

hourly
12
18
2017
20
15
00
18. december 2017 20:15:00
18. december 2017 20:15:00
相反,如果整个列表。只写出最后一个条目

我也尝试了同样的结果:

$d | ForEach-Object {
$i = @(Get-Date -Day $d[2] -Month $d[1] -Year $d[3] -Hour $d[4] -Minute $d[5] -Second $d[6])
}

有什么想法吗?谢谢。

不要拆分,每小时删除一次即可-

$D = 'hourly-12-28-2017-10-15-00','hourly-12-28-2017-11-15-02'
$D -replace 'hourly-' | foreach {
    [datetime]::ParseExact($_, "MM-dd-yyyy-HH-mm-ss", $null)
}

Thursday, December 28, 2017 10:15:00 AM
Thursday, December 28, 2017 11:15:02 AM

不要拆分,只需每小时删除
-

$D = 'hourly-12-28-2017-10-15-00','hourly-12-28-2017-11-15-02'
$D -replace 'hourly-' | foreach {
    [datetime]::ParseExact($_, "MM-dd-yyyy-HH-mm-ss", $null)
}

Thursday, December 28, 2017 10:15:00 AM
Thursday, December 28, 2017 11:15:02 AM
实际上,您不需要首先拆分每个单独的字符串,只需从原始字符串解析日期即可

要解决将大字符串数组划分为更小的块(每个块对应一个日期)的问题,可以执行以下操作:

$strings = @('hourly', '12', '28', '2017', '10', '15', '00', 'hourly', '12', '28', '2017', '11', '15', '02')
do{
    $ds = @{}
    $null,$ds['Month'],$ds['Day'],$ds['Year'],$ds['Hour'],$ds['Minute'],$ds['Second'],$strings = $strings
    Get-Date @ds
} while($strings)
在每次迭代中,
每小时
字符串将被
$null
吞没,接下来的6个字符串(日期时间组件)将填充一个哈希表,并且(任何)剩余的字符串将被分配回
$strings

最后,
Get Date@ds
将根据哈希表中的参数值创建新的DateTime对象,因为您实际上不需要首先拆分每个字符串,只需从原始字符串解析日期即可

要解决将大字符串数组划分为更小的块(每个块对应一个日期)的问题,可以执行以下操作:

$strings = @('hourly', '12', '28', '2017', '10', '15', '00', 'hourly', '12', '28', '2017', '11', '15', '02')
do{
    $ds = @{}
    $null,$ds['Month'],$ds['Day'],$ds['Year'],$ds['Hour'],$ds['Minute'],$ds['Second'],$strings = $strings
    Get-Date @ds
} while($strings)
在每次迭代中,
每小时
字符串将被
$null
吞没,接下来的6个字符串(日期时间组件)将填充一个哈希表,并且(任何)剩余的字符串将被分配回
$strings


最后,
Get Date@ds
将根据哈希表中的参数值创建新的DateTime对象

您是否以这种格式获取日期列表-“hourry-12-28-2017-10-15-00”,“hourry-12-28-2017-11-15-02”,然后将其转换为发布的列表。正确。我正在将Hourry-12-28-2017-10-15-00转换为拆分列表。您是否正在以这种格式获取日期列表-“Hourry-12-28-2017-10-15-00”,“Hourry-12-28-2017-11-15-02”,然后将其转换为您发布的列表。正确。我正在从2017年12月28日每小时10月15日转换为拆分列表。