today = Time.now
how can I do this? “last_week = 7.days.ago”
I know the above won’t work, but how can I get the date of last week?
today = Time.now
how can I do this? “last_week = 7.days.ago”
I know the above won’t work, but how can I get the date of last week?
On Jan 29, 2006, at 4:15 PM, charlie bowman wrote:
today = Time.now
how can I do this? “last_week = 7.days.ago”
I know the above won’t work, but how can I get the date of last week?
–
Posted via http://www.ruby-forum.com/.
Charlie-
In rails actionpack supplies that method for you. Look here:
require ‘rubygems’
=> false
require_gem ‘actionpack’
=> true
7.days.ago
=> Sun Jan 22 18:04:05 PST 2006
Cheers-
-Ezra Z.
WebMaster
Yakima Herald-Republic Newspaper
how can I do this? “last_week = 7.days.ago”
or subtract in seconds:
last_week = today - 72460*60
Cameron
On 1/29/06, Cameron McBride [email protected] wrote:
how can I do this? “last_week = 7.days.ago”
or subtract in seconds:
last_week = today - 72460*60Cameron
This is probably going to be easier with Date than with Time…
irb(main):001:0> require ‘date’
=> true
irb(main):002:0> now = Date.today; now.strftime()
=> “2006-01-29”
irb(main):003:0> last_week = now - 7; last_week.strftime()
=> “2006-01-22”
If you are concerned about times, you can use DateTime in place of Date
above.
-A
On 1/29/06, charlie bowman [email protected] wrote:
Thanks, I had no idea that it was so simple in Ruby!
today = Time.now
puts (today - 7)
Careful!
If you’re using Time, you’re subtracting SECONDS:
irb(main):001:0> today = Time.now
=> Mon Jan 30 00:11:51 EST 2006
irb(main):002:0> puts( today - 7 )
Mon Jan 30 00:11:44 EST 2006
=> nil
That’s why I included the " require ‘date’ " in my example, and
suggested that you could use DateTime if you needed times.
You might want to check out RUNT:
DateBox might also be worth a gander:
-Nb
Nathaniel S. H. Brown http://nshb.net
Thanks, I had no idea that it was so simple in Ruby!
today = Time.now
puts (today - 7)
I thought I would have to write the method myself!
A LeDonne wrote:
On 1/29/06, Cameron McBride [email protected] wrote:
how can I do this? “last_week = 7.days.ago”
or subtract in seconds:
last_week = today - 72460*60Cameron
This is probably going to be easier with Date than with Time…
irb(main):001:0> require ‘date’
=> true
irb(main):002:0> now = Date.today; now.strftime()
=> “2006-01-29”
irb(main):003:0> last_week = now - 7; last_week.strftime()
=> “2006-01-22”If you are concerned about times, you can use DateTime in place of Date
above.-A
Your’re right! as soon as I implemented it I noticed the seconds change.
I just came up with the number of seconds in a day and used that. I
would be nice if it were as simple in ruby as it is in rails, but I know
speed is more important and ease of use…usually.
A LeDonne wrote:
On 1/29/06, charlie bowman [email protected] wrote:
Thanks, I had no idea that it was so simple in Ruby!
today = Time.now
puts (today - 7)Careful!
If you’re using Time, you’re subtracting SECONDS:
irb(main):001:0> today = Time.now
=> Mon Jan 30 00:11:51 EST 2006
irb(main):002:0> puts( today - 7 )
Mon Jan 30 00:11:44 EST 2006
=> nilThat’s why I included the " require ‘date’ " in my example, and
suggested that you could use DateTime if you needed times.
On Jan 29, 2006, at 8:28 PM, A LeDonne wrote:
On 1/29/06, Cameron McBride [email protected] wrote:
how can I do this? “last_week = 7.days.ago”
In rails you are already done:
require_gem ‘actionpack’
=> true
last_week = 7.days.ago
=> Sun Jan 22 22:59:26 PST 2006
p last_week
Sun Jan 22 22:59:26 PST 2006
-Ezra
=> true
irb(main):002:0> now = Date.today; now.strftime()
=> “2006-01-29”
irb(main):003:0> last_week = now - 7; last_week.strftime()
=> “2006-01-22”If you are concerned about times, you can use DateTime in place of
Date above.-A
-Ezra Z.
WebMaster
Yakima Herald-Republic Newspaper
charlie bowman wrote:
today = Time.now
how can I do this? “last_week = 7.days.ago”
I know the above won’t work, but how can I get the date of last week?
Hi Charlie,
you could define something like this:
class Integer
def weeks
self * 7.days
end
def days
self * 24.hours
end
def hours
self * 60.minutes
end
def minutes
self * 60
end
def ago(time = Time.now)
time - self
end
end
puts 7.days.ago #=> Mon Jan 23 01:50:09 GMT 2006
puts 1.weeks.ago #=> Mon Jan 23 01:50:09 GMT 2006
Of course you can alias days with day, weeks with week, add months,
years and so on. You can also add extra methods like Rails does (until,
since, from_now, etc…)
Cheers,
Antonio
Depending on if you need the time component, it may just be eaiser to
work with the Date object.
d = Date.today
lw = d - 7
‘lw’ will be 7 days ago. In this case adding and subtracting seconds
will be fine, but be careful about it, days aren’t always 24 hours long
(think about daylight savings time), and it can really catch up with
you sometimes.
.adam
Haha… it appears like you got ignored doubly for having the exact,
ready-made solution for his problem.
Weird world…
On 1/30/06, charlie bowman [email protected] wrote:
Your’re right! as soon as I implemented it I noticed the seconds change.
I just came up with the number of seconds in a day and used that. I
would be nice if it were as simple in ruby as it is in rails, but I know
speed is more important and ease of use…usually.
What?! Speed more important than ease of use in Ruby!? Surly you jest
sir!!
=)
Charlie,
“I would be nice if it were as simple in ruby as it is in rails”
First, Rails is Ruby. Second, Rails is a smart grouping of stand-alone
components, one of which already has the extensions to do EXACTLY what
you mentioned in your first post.
I’m curious to know why you and the rest of the group seem so focused
on other solutions, given that something so slick already exists. I may
have glanced over the replies too quickly, but it didn’t seem like
their are requirements that rule out the ActionPack solution.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs