Powershell 无法绑定新的TimeSpan-开始。值不是日期时间

Powershell 无法绑定新的TimeSpan-开始。值不是日期时间,powershell,datetime,powershell-2.0,Powershell,Datetime,Powershell 2.0,我必须以秒为单位计算DateTime和Sysdate之间的差异 这个代码运行了好几个月。因为我把它放进了一个函数,我得到了一个错误: New TimeSpan:无法绑定参数“Start”。值“06/14/2016 09:50:42”无法转换为“System.DateTime”。错误:“字符串不是有效的日期时间。” (由于控制台输出为德语,因此用自己的语言翻译) $p_sDatetime的输入格式如06.14.2016 09:50:42。在ParseExact()之后,格式如上图所示。不要重复使用

我必须以秒为单位计算DateTime和Sysdate之间的差异

这个代码运行了好几个月。因为我把它放进了一个函数,我得到了一个错误:

New TimeSpan:无法绑定参数“Start”。值“06/14/2016 09:50:42”无法转换为“System.DateTime”。错误:“字符串不是有效的日期时间。”

(由于控制台输出为德语,因此用自己的语言翻译)


$p_sDatetime
的输入格式如
06.14.2016 09:50:42
。在
ParseExact()
之后,格式如上图所示。

不要重复使用变量或参数,也不要将
DateTime
值转换为字符串并将其解析回
DateTime
值。另外,计算两个
DateTime
值之间的差值将为您提供一个
Timespan
对象(它已经为您提供了一个现成的方法来获取总秒数)。无需特意使用cmdlet或手动计算秒数。使用关键字也是可选的

将oyur函数简化为如下内容:

function _CalcRunningTime {
  param( [String] $p_sDatetime )

  $culture    = New-Object System.Globalization.CultureInfo('de-DE')
  $parsedDate = [DateTime]::ParseExact($p_sDatetime, 'dd.MM.yyyy HH:mm:ss', $culture)

  ($parsedDate – (Get-Date)).TotalSeconds
}
如果不需要秒的分数,请将秒数强制转换为整数:

[int]($parsedDate – (Get-Date)).TotalSeconds

不要重复使用变量或参数,也不要将
DateTime
值转换为字符串并将其解析回
DateTime
值。另外,计算两个
DateTime
值之间的差值将为您提供一个
Timespan
对象(它已经为您提供了一个现成的方法来获取总秒数)。无需特意使用cmdlet或手动计算秒数。使用关键字也是可选的

将oyur函数简化为如下内容:

function _CalcRunningTime {
  param( [String] $p_sDatetime )

  $culture    = New-Object System.Globalization.CultureInfo('de-DE')
  $parsedDate = [DateTime]::ParseExact($p_sDatetime, 'dd.MM.yyyy HH:mm:ss', $culture)

  ($parsedDate – (Get-Date)).TotalSeconds
}
如果不需要秒的分数,请将秒数强制转换为整数:

[int]($parsedDate – (Get-Date)).TotalSeconds

至少就目前而言,这似乎对我很有效:

# ------------------ Func: _CalcRunningTime ------------------
function _CalcRunningTime
{
    param( [String] $p_sDatetime )

    $sSYSDATE   = Get-Date -format "dd.MM.yyyy HH:mm:ss"
    $oTIMESPAN   = New-TimeSpan –Start $p_sDatetime –End $sSYSDATE

    Return $oTIMESPAN.TotalSeconds
}
# ------------------ Func: _CalcRunningTime ------------------

至少就目前而言,这似乎对我很有效:

# ------------------ Func: _CalcRunningTime ------------------
function _CalcRunningTime
{
    param( [String] $p_sDatetime )

    $sSYSDATE   = Get-Date -format "dd.MM.yyyy HH:mm:ss"
    $oTIMESPAN   = New-TimeSpan –Start $p_sDatetime –End $sSYSDATE

    Return $oTIMESPAN.TotalSeconds
}
# ------------------ Func: _CalcRunningTime ------------------

TotalSeconds这个函数对我来说并不突出。我得到一个错误:func的返回值无法转换为System.Int32。@Mike无法复制。属性
TotalSeconds
应该返回一个double,它可以转换为整数。Sry,我不能再复制它了。。。对我来说,现在也可以了。。。我想我在任何地方都遇到了另一个问题,我把事情搞混了。谢谢你,先生。TotalSeconds这个功能对我来说不太重要。我得到一个错误:func的返回值无法转换为System.Int32。@Mike无法复制。属性
TotalSeconds
应该返回一个double,它可以转换为整数。Sry,我不能再复制它了。。。对我来说,现在也可以了。。。我想我在任何地方都遇到了另一个问题,我把事情搞混了。谢谢你,先生。