2016-12-31 2 views
6

Per Kodex-Golf Spitze, in Powershell Sie wissenschaftliche Schreibweise leicht verwenden können, um Zahlen zu erzeugen, die Kräfte von 10 sind: https://codegolf.stackexchange.com/a/193/6776Ausgabe wissenschaftliche Notation als Parameter für die Get-Date

heißt 1e7 erzeugen die Zahl 10,000,000.

Wenn ich diesen Wert auf get-date geben (oder alias date, für die Zwecke des Code Golf) Ich erhalte eine einzige Sekunde: das heißt date 10000000 =>01 January 0001 00:00:01.

Doch wenn ich die wissenschaftliche Schreibweise verwenden, auch mit Klammern (dh date (1e7)) Ich erhalte eine Fehlermeldung:

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 

Frage

Gibt es eine Möglichkeit der wissenschaftliche Notation mit dem Get- zu verwenden Datum Standard (Datum) Parameter?

+4

Verwenden: 'Datum (1e7l)'. – PetSerAl

+1

Vergleichen Sie 'Trace-Befehl {Get-Date (1000)} -Name ParameterBind * -PSHost' und 'Trace-Befehl {Get-Date (1e3)} -Name ParameterBind * -PSHost' –

+0

@PetSerAl Wow, das l dreht sich dies in ein Int64. Warum? –

Antwort

6

Dies liegt daran, 1e7 als Doppel outputed wird, so dass Sie nur zu Besetzung haben es auf eine ganze Zahl:

date ([int]1e7) 

können Sie überprüfen, dass, wenn Sie die GetType Methode auf der Ausgabe aufrufen:

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

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

Edit: Kürzeste Skript wahrscheinlich :

1e7l|date 

Der von PetSerAls comment genommen wird - nur durch die Verwendung Rohr anstelle von Klammern ein anderes Zeichen entfernt.

+0

Ah, danke @Martin. – JohnLBevan

+0

Ich habe meine Antwort mit dem netten Kommentar von @PetSerAl bearbeitet und ein Zeichen durch Verwendung von Pipe anstelle von Klammern reduziert. –

+1

Eigentlich brauchst du hier keine Klammern: 'date 1e7l'. – PetSerAl

Verwandte Themen