Unable to convert a string to an integer variable from DateTaken attribute on a JPG file

前端 未结 2 1159
萌比男神i
萌比男神i 2021-01-16 04:49

I have a script which is using the EXIF data from a JPG file to find the DateTaken value. Once found, place the data in $Year and $Month

2条回答
  •  青春惊慌失措
    2021-01-16 05:30

    A better approach to working with dates is to convert the date string to an actual DateTime object, which provides all the information you're looking for:

    $culture = [Globalization.CultureInfo]::InvariantCulture
    $pattern = 'dd\/MM\/yyyy'
    
    $datestring = $objFolder.GetDetailsOf($File, 12).Split(' ')[0]
    $datetaken  = [DateTime]::ParseExact($datestring, $pattern, $culture)
    
    $year      = $datetaken.Year
    $month     = $datetaken.Month              # month (numeric)
    $monthname = $datetaken.ToString('MMMM')   # month name
    

    Assuming that the date is followed by a time in the format HH:mm:ss you could extend the code to handle the time as well:

    $culture = [Globalization.CultureInfo]::InvariantCulture
    $pattern = 'dd\/MM\/yyyy HH:mm:ss'
    
    $datestring = $objFolder.GetDetailsOf($File, 12)
    $timestamp  = [DateTime]::ParseExact($datestring, $pattern, $culture)
    
    $year      = $timestamp.Year
    $month     = $timestamp.Month              # month (numeric)
    $monthname = $timestamp.ToString('MMMM')   # month name
    $hour      = $timestamp.Hour
    ...
    

提交回复
热议问题