根据此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的默认(日期)参数中使用科学记数法?
答案 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 - 只是使用管道而不是括号删除了另一个字符。