2016-12-31 15 views
6

mỗi này Code-Golf tip, trong PowerShell bạn có thể sử dụng ký hiệu khoa học để dễ dàng tạo ra con số đó là quyền hạn của 10: https://codegolf.stackexchange.com/a/193/6776Issue sử dụng ký hiệu khoa học như một tham số cho Get-Date

ví dụ 1e7 sản xuất số lượng 10,000,000.

Nếu tôi vượt qua giá trị này để get-date (hoặc bí danh date, nhằm mục đích golf code) tôi nhận được một đĩa đơn thứ hai: ví dụ: date 10000000 =>01 January 0001 00:00:01.

Tuy nhiên, nếu tôi sử dụng các ký hiệu khoa học, ngay cả với dấu ngoặc (ví dụ: date (1e7)) tôi nhận được một lỗi:

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 

Câu hỏi

Có cách nào để sử dụng ký hiệu khoa học với GET Tham số mặc định (ngày) của ngày?

+4

Sử dụng: 'date (1e7l)'. – PetSerAl

+1

So sánh 'Dấu vết-Lệnh {Nhận ngày (1000)} -Name ParameterBind * -PSHost' và' Dấu vết-Lệnh {Get-Date (1e3)} -Name ParameterBind * -PSHost' –

+0

@PetSerAl Wow, tôi đang quay này vào một int64. tại sao? –

Trả lời

6

Điều này là do 1e7 bị outputed như một đôi, vì vậy bạn chỉ phải cast nó vào một số nguyên:

date ([int]1e7) 

Bạn có thể kiểm tra xem nếu bạn gọi phương thức GetType trên đầu ra:

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

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

Edit: kịch bản ngắn nhất có lẽ là :

1e7l|date 

Điều này được lấy từ PetSerAls comment - chỉ cần xóa một ký tự khác bằng cách sử dụng đường ống thay vì dấu ngoặc vuông.

+0

Ah, cảm ơn @Martin. – JohnLBevan

+0

Tôi đã chỉnh sửa câu trả lời của mình bằng nhận xét hay từ @PetSerAl và giảm một ký tự bằng cách sử dụng đường ống thay vì dấu ngoặc vuông. –

+1

Trên thực tế, bạn không cần dấu ngoặc ở đây: 'ngày 1e7l'. – PetSerAl

Các vấn đề liên quan