2015-01-02 14 views
10

Tôi đang cố gắng chuyển đổi giá trị dấu thời gian của tệp thành ngày để so sánh hai chênh lệch thời gian ngày.Chuyển đổi chuỗi thành Ngày giờ trong PowerShell

Dữ liệu sẽ có định dạng 24122014_022257. Tôi cần phải chuyển đổi điều này thành ngày tháng để tôi có thể so sánh các giá trị:

$usdate="24122014_022257" 
$dateParts = $usdate -split "_" 
$final = $dateparts[0] + $dateParts[1] 

Làm cách nào để thực hiện?

Trả lời

18

Bạn có thể sử dụng phương thức ParseExact:

[datetime]::ParseExact('24122014_022257','ddMMyyyy_HHmmss',$null) 

Wednesday, December 24, 2014 2:22:57 AM 
+5

Sử dụng '[Globalization.CultureInfo] :: InvariantCulture' hơn là' $ null'. Cái thứ hai sẽ đưa ra một lỗi nếu ví dụ chuỗi định dạng có một bộ định danh AM/PM trong khi các thiết lập vùng của hệ thống của bạn thì không. –

+1

Tôi thường chỉ thêm thông số 'tt' vào chuỗi định dạng nếu tôi đang chuyển đổi dữ liệu sử dụng các chỉ số AM/PM. – mjolinor

+1

Tôi không thấy điểm trong việc thêm một tùy chọn để xử lý sự khác biệt văn hóa trong các trình thiết kế AM/PM thực hiện ParseExact trên các chuỗi không có trình chỉ định đó. – mjolinor

8

ParseExact sẽ làm việc đó. Bạn có thể chỉ định định dạng datetime tùy chỉnh trong tham số thứ hai. Bạn có thể để tham số thứ ba là null, hoặc chỉ định một nền văn hóa để sử dụng (nó có thể quan trọng nếu bạn đang nhập các tệp được tạo ra từ hệ thống với múi giờ khác nhau).

$usdate="24122014_022257" 
[datetime]::ParseExact($usdate,"ddMMyyyy_HHmmss", [System.Globalization.CultureInfo]::CurrentCulture) 
2

get cập nhật 24122014022257

Thứ Tư 24 tháng 12, năm 2014 02:22:57

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