2012-08-13 46 views
28

Tôi mới dùng ruby ​​trên đường ray và bị kẹt trong các ngày. Tôi đã sử dụng Time.now để nhận thời gian hiện tại. Bây giờ tôi muốn tìm hiểu ngày srart và kết thúc cho tuần hiện tại và tháng hiện tại. Ví dụ:Đường ray - Nhận ngày bắt đầu và ngày kết thúc của tuần hiện tại

Nếu Time.now trả về cho tôi -

2012-08-13 15:25:35 +0530 

Sau đó, khi bắt đầu và ngày kết thúc cho tuần hiện tại là:

2012-08-12 - 2012-08-18 

Sau đó, khi bắt đầu và ngày kết thúc cho tháng hiện tại là:

2012--08-01 - 2012-08-31 

Tôi đang triển khai cùng một mã sử dụng:

Time.now.wday 
=> 1 

Time.now - 1.day 
=> 2012-08-12 15:31:44 +0530 

Time.now + 5.day 
=> 2012-08-19 15:32:38 +0530 

v.v .. Nhưng tôi không tìm thấy cách thuận tiện để thực hiện việc này. Tôi chắc chắn Ruby on Rails có một giải pháp tốt hơn. bất cứ ai có thể gợi ý để tìm ra giống nhau ..

Trả lời

53

Thay vì sử dụng Time.now

Sử dụng đoạn mã sau để có được truy vấn của bạn giải quyết

d = Date.today 

d.at_beginning_of_week 
#Mon, 13 Aug 2012 
d.at_beginning_of_week.strftime 
#"2012-08-13" 
d.at_beginning_of_week.strftime("%d") 
#"13" -> To print the date. 

Tương tự, bạn có thể tìm thấy nhiều phương pháp trong Date Class

+0

Câu trả lời này đã có một thời gian , Tôi đang sử dụng Rails 5.0.1, trong đó tôi cũng có thể sử dụng 'Time.now.at_beginning_of_ *', chỉ cần nghĩ rằng tôi sẽ thêm nó làm bình luận cho người đọc trong tương lai;) – SidOfc

2

Check-out class Date:

http://api.rubyonrails.org/classes/Date.html

Các phương pháp beginning_of_ * và end_of_ * trông giống như chính xác những gì bạn đang sau. Trong tuần, bạn thậm chí có thể vượt qua vào ngày nào bạn cân nhắc bắt đầu tuần.

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