2012-08-13 11 views
28

Sono nuovo di rubino su rotaie e sono rimasto bloccato nelle date. Ho usato Time.now per ottenere l'ora corrente. Ora voglio scoprire le date srart e end per la settimana corrente e il mese corrente. Per esempio:Rails - Ricevi le date di inizio e fine della settimana e del mese corrente

Se Time.now mi restituisce -

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

Poi sono le date di inizio e di fine della settimana in corso:

2012-08-12 - 2012-08-18 

Poi sono le date di inizio e di fine del mese corrente:

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

Sto implementando lo stesso utilizzando il codice:

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 

e così via .. Ma non trovo un modo conveniente per farlo. Sono sicuro che Ruby on Rails ha una soluzione migliore. Qualcuno può suggerire di capire lo stesso ..

risposta

53

Invece di usare Time.now

Utilizzare il seguente codice per ottenere le vostre domande risolto

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. 

Allo stesso modo è possibile trovare diversi metodi nella Date Class

+0

Questa risposta è stato lì per un po ' , Sto usando Rails 5.0.1 in cui posso anche usare 'Time.now.at_beginning_of_ *', ho pensato di aggiungerlo come commento per il futuro lettore;) – SidOfc

2

Partenza classe Date:

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

I metodi beginning_of_ * e * end_of_ assomigliano esattamente quello che stai cercando. Per la settimana, puoi persino passare in quale giorno consideri l'inizio della settimana.

Problemi correlati