使用科学记数法作为Get-Date参数的问题

时间:2016-12-31 13:55:25

标签: powershell

根据此Code-Golf提示,在PowerShell中,您可以使用科学记数法轻松生成10的幂数:https://codegolf.stackexchange.com/a/193/6776

即。 1e7生成数字10,000,000

如果我将此值传递给get-date(或别名date,为了代码高尔夫的目的)我得到一秒钟:即date 10000000 => 01 January 0001 00:00:01

然而,如果我使用科学记数法,即使用括号(即date (1e7)),我也会收到错误:

Get-Date : Cannot bind parameter 'Date'. Cannot convert value "10000000" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
At line:1 char:6
+ date (1e7)
+      ~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand

问题

有没有办法在Get-Date的默认(日期)参数中使用科学记数法?

1 个答案:

答案 0 :(得分:6)

这是因为1e7作为 double 输出,所以你只需将其转换为整数

date ([int]1e7)

如果您在输出上调用GetType方法,则可以检查:

(1e7).GetType() | Format-Table -AutoSize

IsPublic IsSerial Name   BaseType        
-------- -------- ----   --------        
True     True     Double System.ValueType

修改 最短的脚本可能是:

1e7l|date

这取自PetSerAls comment - 只是使用管道而不是括号删除了另一个字符。