programing

PowerShell에서 DateTime을 포맷하는 방법

magicmemo 2023. 4. 26. 23:12
반응형

PowerShell에서 DateTime을 포맷하는 방법

다음과 같은 문제 없이 cmdlet을 포맷할 수 있습니다.

$date = Get-Date -format "yyyyMMdd"

그러나 변수에 날짜가 지정되면 어떻게 형식을 지정해야 합니까?아래의 진술서

$dateStr = $date -format "yyyMMdd"

다음 오류를 반환합니다.

"'-f' 연산자의 오른쪽에 값 식을 입력해야 합니다."

당신이 하는 것과 같습니다.NET:

$DateStr = $Date.ToString("yyyyMMdd")

또는:

$DateStr = '{0:yyyyMMdd}' -f $Date

간단하고 좋은 방법은 다음과 같습니다.

$time = (Get-Date).ToString("yyyy:MM:dd")

질문에 답변했지만 누락된 정보가 있습니다.

변수 대.cmdlet

당신은 가치가 있습니다.$Date변수와-f연산자는 다음과 같은 형식으로 작동합니다.'format string' -f values전화하시면Get-Date -format "yyyyMMdd"일부 매개 변수를 사용하여 cmdlet을 호출합니다.값 "yyyyMMDD"는 매개 변수에 대한 값입니다.Format(노력)help Get-Date -param Format).

-f교환입니다.

많은 형식 문자열이 있습니다.적어도 파트 1과 파트 2를 보세요.그녀는 사용합니다.string.Format('format string', values')라고 생각합니다.'format-string' -f values왜냐하면-f연산자는 다음과 매우 유사하게 작동합니다.string.Formatmethod (몇 가지 차이점이 있지만, 자세한 내용은 Stack Overflow의 질문을 참조하십시오.PowerShell의 -f 연산자의 RHS는 정확히 어떻게 작동합니까?)

매우 편리하지만 아마도 너무 효율적이지는 않은 해결책은 회원 기능을 사용하는 것입니다.

$d = Get-Date
$d.GetDateTimeFormats()

그러면 날짜 값에 대한 형식 지정 스타일의 큰 문자열 배열이 출력됩니다.그런 다음 다음 다음을 통해 배열의 요소 중 하나를 선택할 수 있습니다.[]-예:

PS C:\> $d.GetDateTimeFormats()[12]
Dienstag, 29. November 2016 19.14

한 가지 방법은 다음과 같습니다.

$date.ToString("yyyyMMdd")

꼭 사용해야 하는 경우 이 작업을 수행합니다.-Format옵션:

$dateStr = Get-Date $date -Format "yyyMMdd"

하지만

$dateStr = $date.toString('yyyMMdd')

아마도 더 효율적일 것입니다.:)

만약 당신이 이것을 사용하기 위해 여기에 왔다면.cmd.exe(배치 파일):

powershell -Command (Get-Date).ToString('yyyy-MM-dd')

@stej의 매우 유익한 답변이지만, 여기 짧은 답변이 있습니다: 다른 옵션 중에서 [시스템]을 포맷할 수 있는 3가지 간단한 옵션이 있습니다.DateTime]이(가) 변수에 저장됩니다.

  1. Get-Date cmdlet에 변수를 전달합니다.Get-Date -Format "HH:mm" $date

  2. toString() 메서드 사용:$date.ToString("HH:mm")

  3. 복합 형식 사용:"{0:HH:mm}" -f $date

HTTP 헤더에서 사용할 현재 날짜를 포맷하려는 사용자는 "r" 형식(RFC1123의 줄임말)을 사용하지만 주의해야 합니다.

PS C:\Users\Me> (get-date).toString("r")
Thu, 16 May 2019 09:20:13 GMT
PS C:\Users\Me> get-date -format r
Thu, 16 May 2019 09:21:01 GMT
PS C:\Users\Me> (get-date).ToUniversalTime().toString("r")
Thu, 16 May 2019 16:21:37 GMT

즉, "To Universal Time()"을 사용하는 것을 잊지 마십시오.

저는 시간과 약간의 형식 변화가 필요했습니다.이는 제 목적에 매우 적합합니다.

$((get-date).ToLocalTime()).ToString("yyyy-MM-dd HHmmss")

2019-08-16 215757

@mklement0 의견에 따르면, 이는 동일한 결과를 산출해야 합니다.

(get-date).ToString("yyyy-MM-dd HHmmss")

출력 필요에 따라 날짜 시간 형식 지정

날짜를 형식화하고 문자열을 변수에 할당하려는 경우.PowerShell과 를 모두 결합했습니다.유연성을 제공하는 NET.

    $oDate = '{0}' -f ([system.string]::format('{0:yyyyMMddHHmmss}',(Get-Date)))

작동 방식

  • PowerShell 연산자 - '{0}' -f(...)
  • .NET 표기법 - [system.string]::format('사용자 정의 형식',InputObject)
  • PowerShell을 와 결합하여 사용자 정의된 포맷.NET - '{0:yyyyy''MMddHHmmss}'
  • PowerShell cmdlet에서 제공하는 입력 개체 - (Get-Date)
  • PowerShell 변수에 저장됨 - $oDate

실행 날짜 및 시간이 월요일인 경우 2021년 7월 5일 오후 5:45:22(포맷 '{0:F})"

  • $oDate = 20210705174522

코드 사용

'yyyy'를 수정하여 요구 사항에 맞게 문자열을 사용자 지정할 수 있습니다.Microsoft를 사용하는 MMddHHmmss'입니다.NET 사용자 지정 날짜 시간 표기법.

원하는 형식을 선택한 다음 필요한 곳에 붙여넣을 수 있습니다.

$DTFormats = (Get-Date).GetDateTimeFormats()
$Formats = @()
$i=0
While ($i -lt $DTFormats.Count){
    $row = [PSCustomObject]@{
        'IndexNumber' = $i
        'DateTime Format' = $DTFormats[$i]
    }
    $Formats += $row
    $i++
}

$DTSelection = ($Formats | Out-GridView -OutputMode Single -Title 'Select DateTime Format').IndexNumber
$MyDTFormat = "(Get-Date).GetDateTimeFormats()[$DTSelection]"
Write-Host " "
Write-Host " Use the following code snippet to get the DateTime format you selected:"
Write-Host "    $MyDTFormat" -ForegroundColor Green
Write-Host " "
$MyDTFormat | Clip
Write-Host " The code snippet has been copied to your clipboard. Paste snippet where needed."

dueDate 문자열을 날짜 시간으로 변환한 다음 형식을 지정했습니다.

 [Datetime]::ParseExact($dueDate,'MM/dd/yyyy H:mm:ss',$null).ToString('MM/dd/yyyy') 

언급URL : https://stackoverflow.com/questions/2249619/how-to-format-a-datetime-in-powershell

반응형