2013-02-15 41 views
9

Đây là một câu hỏi của Ruby (1.9.1)thời gian ngày Ruby trong chuyển đổi chuỗi cho đến nay thời gian với mili giây

Tôi có ngày sau và thời gian trong một chuỗi:

29 Sep 2013 12:25:00.367 

đầu tiên tôi muốn chuyển đổi nó từ chuỗi thành ngày và giờ và sau đó thêm 10 giây vào nó và chuyển đổi nó trở lại định dạng chuỗi giống như ở trên.

tôi đã viết mã này:

format = "%d %b %Y %H:%M:%S" 
date_time = "29 Sep 2013 22:11:30.195" 
parsed_time = DateTime.strptime(date_time, format) 
puts " new date time is #{parsed_time}" 

Những kết quả đầu ra:

new date time is 2013-09-29T22:11:30+00:00 

Tôi không thấy "195". Tôi đã thử format = "%d %b %Y %H:%M:%S.%3N" và điều này cho:

fileOpTest:34:in `strptime': invalid date (ArgumentError) from fileOpTest:34:in `<main>' 
+1

Bạn nên nâng cấp phiên bản Ruby, v1.9.1 cũ và lỗi. –

+0

Cùng một vấn đề xảy ra với ruby ​​2.1: b = DateTime.current.strftime ("% Y-% m-% d% H:% M:% S.% 3N"); DateTime.strptime (b, "% Y-% m-% d% H:% M:% S.% 6L") tạo ra lỗi tương tự –

Trả lời

15

Điều này có thể được thực hiện rất dễ dàng bằng cách sử dụng Time class. Bạn có thể thêm vào Thời gian bằng cách thêm giây. Sau đó, sử dụng #strftime

t= Time.parse('29 Sep 2013 12:25:00.367') 
=> 2013-09-29 12:25:00 -0400 
t=t + 10 
=> 2013-09-29 12:25:10 -0400 
t.strftime("%d %b %Y %H:%M:%S.%3N") 
=> "29 Sep 2013 12:25:10.367" 
+0

Xin chào, tôi nhận được một "phương thức không xác định" phân tích cú pháp 'cho Thời gian: Lớp (NoMethodError) " lỗi. Ruby phiên bản nào bạn có? Tôi có 1.9.1 Cảm ơn Asha –

+1

Xin chào, tôi đã thêm 'yêu cầu' thời gian 'và nó đã hoạt động. Cảm ơn rất nhiều. –

+0

Vui lòng chấp nhận câu trả lời bằng cách nhấp vào dấu kiểm ở bên trái nếu Michael có thể giải quyết vấn đề của bạn. –

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