【问题标题】:Getting the # of days difference between two dates in Powershell获取Powershell中两个日期之间的天数差异
【发布时间】:2017-10-24 09:24:28
【问题描述】:

我正在尝试获取 Windows powershell 中的天数差异,我正在从一个文本文件中提取一年中的最后一个日期,即20171231(yyyyMMdd),该文本文件在该文件中本地存储了日期。

这是我正在尝试但无法获得天数差异的以下代码,如果要转换从文件中提取的字符串然后用日期类型减去它,则通过直接减去得到错误的输出,即使那样我得到了错误的输出。

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

$content = Get-Content C:\Users\Date.txt 

$diff = $content.ToString();

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

#$diff3 = $diff - $DateStr

【问题讨论】:

    标签: powershell


    【解决方案1】:

    New-TimeSpan 用作it represents a time interval。像这样,

    $d1 = '2017-01-01'
    $d2 = '2017-05-01'
    $ts = New-TimeSpan -Start $d1 -End $d2
    $ts.Days # Check results
    120
    

    【讨论】:

    • (New-TimeSpan -Start '2017-01-01' -End '2017-05-01').Days(此处仅以一种表达形式)
    【解决方案2】:

    一个快速、肮脏的单行 powershell 脚本,用于获取当前日期和任何未来日期之间的差异:

    [math]::Ceiling((([DateTime]'mm-dd-yyyy')-(Get-Date)).TotalDays)
    

    【讨论】:

      【解决方案3】:

      $DateStr 将是一个字符串,因此不能将其解析为日期。您还可以使用 new-timespan 来获取两个日期之间的差异。

      $Date = Get-Date
      
      $diff = Get-Content C:\Users\Date.txt -raw
      
      #Convert it to the date type
      $diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)
      
      $diff3 = New-TimeSpan -Start $diff -end $Date
      
      #Number of days
      $diff3.days
      

      【讨论】:

        【解决方案4】:

        其他人的回答很好,但我经常使用Date-Diff 函数(它功能强大且为开发人员所熟知)。请参见下面的示例:

        Using Namespace Microsoft.VisualBasic
        Add-Type  -AssemblyName  Microsoft.VisualBasic
        $beg = Get-Date '2019-01-01'
        $end = Get-Date
        [DateAndTime]::DateDiff([DateInterval]::Day, $beg, $end)
        

        HTH

        【讨论】:

          【解决方案5】:
          $Date = Get-Date
          
          $diff = Get-Content C:\Users\Date.txt -raw
          
          #Convert it to the date type
          $diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)
          
          #simply difference between dates give you a timespan, take days
          ($diff - $Date).Day
          

          【讨论】:

            【解决方案6】:

            如果您转换为 datetime 对象,将它们减去并查看 days 属性非常简单。这也适用于时间。

            [datetime]'9/3' - [datetime]'9/1' | % days
            
            2
            
            
            [datetime]'10:30' - [datetime]'9:30' | % hours
            
            1
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-11-15
              • 1970-01-01
              • 2011-03-20
              • 1970-01-01
              • 2011-03-19
              • 1970-01-01
              • 1970-01-01
              • 2019-05-11
              相关资源
              最近更新 更多