2017-12-28 5 views
0

에 문자열 배열을 변환 :내가 잘 작동합니다 날짜 형식으로 변환 문자열 메신저가 날짜

$d = 'hourly-12-18-2017-20-15-00' -split '-' 

나를 가져옵니다 :

hourly 
12 
18 
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] 

나를 가져옵니다.

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 
} 

저를 가져옵니다 :

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]) 
} 

어떤 아이디어 :

는 또한 같은 결과를 시도? 감사.

+0

에서 매개 변수 값을 기준으로 새 DateTime 개체를 생성합니다 - '시간당-12-28-2017-10-15-00' , 'hourly-12-28-2017-11-15-02'로 변경 한 다음 게시 한 목록으로 변환합니다. –

+0

수정하십시오. 나는 시간제 -12-28-2017-10-15-00에서 분할 목록으로의 전환을하고있다. – user3019059

답변

2

분할하지 말고 hourly- 만 제거하십시오.

$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 
1

another answer has already mentioned, 당신은 실제로 -split 처음에 각각의 문자열로, 당신은 단지 원래 문자열에서 날짜를 구문 분석 할 필요가 없습니다.

작은 덩어리로 각 날짜에 해당하는 당신의 큰 문자열 배열을 분할의 문제를 해결하기 위해, 당신은 같은 것을 할 수있는 각 반복에

$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) 

을의 hourly 문자열 $null,에 의해 삼켜됩니다 다음 6 개의 문자열 (datetime 구성 요소)은 해시 테이블을 채우고 나머지 문자열은 $strings에 다시 할당됩니다.

마지막으로, Get-Date @ds는이 형식으로 날짜의 목록을 얻고있다 해시 테이블