2012-11-06 35 views
12

Tôi đang cố gắng nhập một số dữ liệu từ một tệp phẳng và đang nhận được một số kết quả kỳ lạ. Khi nhập thời gian không được đính kèm vào một ngày, tại sao tôi cũng có một ngày được chèn vào thời gian này?Bạn có thể có thời gian không có ngày trong đường ray không?

1.9.3-p286 :008 > v.arrival_time = Time.parse("10:10") 
=> 2012-11-06 10:10:00 -0400 

Tôi đoán rằng chỉ có một cách để giữ ngày bằng cách riêng của mình, nhưng không có cách nào để giữ thời gian bằng cách riêng của mình bất chấp những kỷ lục hoạt động cột kiểu: thời gian. Có cách nào để giữ chúng tách rời như:

1.9.3-p286 :002 > Date.parse("JAN 01 2000") 
=> Sat, 01 Jan 2000 
+0

bạn có thể sử dụng strftime nhưng đầu ra là đối tượng String: 'đặt Time.now.strftime ("% I:% M:% S% z ") # =>" 09:33:00 -0400 " HOẶC 'đặt Time.now.strftime ("% I:% M:% S% Z% z ") # =>" 09:33:00 EDT -0400 "' – MrYoshiji

+1

Tôi cũng đã gặp phải vấn đề này và tôi vừa viết mã để chuyển đổi chuỗi thời gian bạn nhận được thành giá trị số nguyên của số giây. Làm thao tác chuỗi là khá dễ dàng, thậm chí nhiều hơn như vậy nếu bạn biết nó luôn ở dạng HH: MM. – MrDanA

Trả lời

8

Đối tượng Time trong Ruby sử dụng "Unix Time" để lưu trữ điểm thời gian theo giây kể từ ngày 1 tháng 1 năm 1970 00:00 UTC. Các phương thức khác nhau như strftime chỉ thay đổi định dạng đầu ra, nhưng không thay đổi cách đối tượng được lưu trữ trong nội bộ.

Vì vậy, bạn có quyết định thực hiện: giữ dữ liệu đã nhập dưới dạng đối tượng Thời gian và lưu ý những gì thực sự chứa hoặc nhập dữ liệu của bạn dưới dạng chuỗi nhưng bỏ tất cả các tính năng hữu ích, đáng yêu của Time.

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