【问题标题】:PowerShell get latest string datePowerShell 获取最新的字符串日期
【发布时间】:2021-05-28 22:41:47
【问题描述】:

我有一个包含日期的列表

$date = @('05-28-2020','09-30-2021')

我想查找最近的日期

我尝试在比较之前转换字符串:

[datetime]::ParseExact($date[0],'MM_dd_yyyy', $null)

但不工作

有什么想法吗?

【问题讨论】:

  • 您的 exact 解析模式与您的输入数据不匹配。 [grin] 将 _ 替换为 - 就可以了。

标签: powershell datetime datetime-format


【解决方案1】:

因此:

$date = @('05-28-2020','09-30-2021') # Note: The @(...) enclosure isn't strictly needed.

[Linq.Enumerable]::Max([datetime[]] $date)

在美式英语系统上,上述生成 Thursday, September 30, 2021 12:00:00 AM,即输入中最近日期的默认输出格式 [datetime] '09-30-2021'


至于你尝试了什么

  • 如前所述,您调用ParseExact() 的唯一直接问题是您使用_ 而不是-

  • 另请注意,将$null 作为第三个参数传递意味着在解析期间使用文化当前有效(如[cultureinfo]::CurrentCulture 中所反映的那样;这与numeric 无关 格式化序列,例如 MM,但它会使用 符号 序列,例如 MMM - 甚至可能使用不带引号的占位符 :/

【讨论】:

    【解决方案2】:

    将您的_ 切换为-,它将起作用:

    【讨论】:

      【解决方案3】:
      $date = @('05-28-2020','09-30-2021')
      $max = '01-01-1999'
      $date | ForEach-Object {
          if($_ -ge $max){
              $max = $_
          }
      }
      

      这应该可以完成工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-28
        • 2017-08-25
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 2018-07-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多