Regualr expression (need help)

Hi all,

anybody an idea how to transform the date out of this string
Not After : Apr 3 11:13:11 2008 GMT

to

2008-4-3

Help is very apreciated!!

Thx.

Henry

Heinrich P. wrote:

anybody an idea how to transform the date out of this string
Not After : Apr 3 11:13:11 2008 GMT

to

2008-4-3

Time.parse(“Not After : Apr 3 11:13:11 2008 GMT”) will give you a Time
object. You can get the desired string from that quite easily (using
strftime
for example, or just using Time#day, Time#month and Time#year directly).

HTH,
Sebastian

I would create a time object and then format it how you like.

Time.parse(string).strftime(format_string)

Look up the docs for Time#strftime to determine the format string.

sorry to post what might be a moronic question, but i although
Time.parse shows up in the online core docs, Time.parse isn’t a method
on any machine of mine.

e.g.

irb(main):001:0> Time.methods.sort
=> [:"!", :"!=", :"!~", :<, :<=, :<=>, :==, :===, :=~, :>, :>=,
:id, :send, :_load, :allocate, :ancestors, :at, :autoload,
:autoload?, :class, :class_eval, :class_exec,
:class_variable_defined?, :class_variable_get, :class_variable_set,
:class_variables, :clone, :const_defined?, :const_get, :const_missing,
:const_set, :constants, :define_singleton_method, :display, :dup,
:enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :gem, :gm,
:hash, :include?, :included_modules, :inspect, :instance_eval,
:instance_exec, :instance_method, :instance_methods, :instance_of?,
:instance_variable_defined?, :instance_variable_get,
:instance_variable_set, :instance_variables, :is_a?, :kind_of?,
:local, :method, :method_defined?, :methods, :mktime, :module_eval,
:module_exec, :name, :new, :nil?, :now, :object_id,
:private_class_method, :private_instance_methods,
:private_method_defined?, :private_methods,
:protected_instance_methods, :protected_method_defined?,
:protected_methods, :public_class_method, :public_instance_method,
:public_instance_methods, :public_method, :public_method_defined?,
:public_methods, :public_send, :remove_class_variable, :respond_to?,
:send, :singleton_methods, :superclass, :taint, :tainted?, :tap,
:to_enum, :to_s, :untaint, :utc]
(from an ubuntu box running 1.9.0–but i don’t get a parse on 1.8.6 on
ubuntu or mac)

in fact, whytheluckstiff’s online ruby terminal at hobix.com does
have Time#parse. and you all are using it. any ideas? where did i drop
the ball?

thanks in advance.

louis wrote:

sorry to post what might be a moronic question, but i although
Time.parse shows up in the online core docs, Time.parse isn’t a method
on any machine of mine.

Try requiring time first.
require ‘time’

HTH,
Sebastian

Daniel F. wrote:

I would create a time object and then format it how you like.

Time.parse(string).strftime(format_string)

Look up the docs for Time#strftime to determine the format string.

Guys - thanks a lot.
It works just great!!

Here the snipped:
ValidDate = File.open(“someFile.txt”).readlines.to_s.grep(/Not After/)
#puts 'Certificate is valid ’ + ValidDate.to_s
CertValidDate = Time.parse(ValidDate.to_s).strftime("%Y-%d-%m")
#puts CertValidDate

Now I can do my comparison with actualDate and CertValidDAte and I am
able to create an alarm.

Thanks!!!

bye
Henry

that did help a lot! thanks! now i have to find/read more on what’s in
the core that needs ‘requiring’. thanks again!

Henry,

should do :

ValidDate = File.readlines('someFile.txt').to_s.grep(/Not After/)

instead of :

ValidDate = File.open("someFile.txt").readlines.to_s.grep(/Not 

After/)

Sebastian corrected me once… File.open without a block will leave the
file
pointer open… :slight_smile:

M

Mike McKinney wrote:

should do :

ValidDate = File.readlines('someFile.txt').to_s.grep(/Not After/)

Yes, and leave out the to_s, too. If you want a string use File.read
instead
of File.readlines. In this case you can use both, though, since String
and
Array both have a grep method. But using readlines to get an array and
then
converting it to string via to_s, doesn’t make sense.

HTH,
Sebastian

Sebastian H. wrote:

Mike McKinney wrote:

should do :

� � ValidDate = File.readlines(‘someFile.txt’).to_s.grep(/Not After/)

Yes, and leave out the to_s, too. If you want a string use File.read
instead
of File.readlines. In this case you can use both, though, since String
and
Array both have a grep method. But using readlines to get an array and
then
converting it to string via to_s, doesn’t make sense.

HTH,
Sebastian

Thanks guys,

I did include those changes in my code.

bye
Henry

Heinrich P. wrote:

Sebastian H. wrote:

Mike McKinney wrote:

should do :

� � ValidDate = File.readlines(‘someFile.txt’).to_s.grep(/Not After/)

Yes, and leave out the to_s, too. If you want a string use File.read
instead
of File.readlines. In this case you can use both, though, since String
and
Array both have a grep method. But using readlines to get an array and
then
converting it to string via to_s, doesn’t make sense.

HTH,
Sebastian

Thanks guys,

I did include those changes in my code.

bye
Henry

Hi all,

one more thing. I saw something in this forum about ‘how to calculate
time difference’ , but I can’t find it anymore.

I want to calculate the time difference (in days):

DateDiff = CertValidDate - actualDate

but I get this error message: undefined method `-’ for
“2008-09-10”:String (NoMethodError)

bye
Henry

On Sun, 13 Jan 2008 14:37:35 -0500, louis wrote:

that did help a lot! thanks! now i have to find/read more on what’s in
the core that needs ‘requiring’. thanks again!

I’ve noticed that. I think it’s a bug on ruby-docs.org that somebody
needs to fix.

–Ken

na, you are trying to execute the “-” method on a string (which doesn’t
exist)

if you have two dates, you can execute the “-” method just fine (result
is a
Rational)

try this:
require ‘date’

date_one = Date.parse(‘2008-01-01’)
date_two = Date.parse(‘2008-02-02’)

puts “date_one = #{date_one}”
puts “date_two = #{date_two}”
diff = date_two - date_one
puts “date_two - date_one = #{diff} (class:#{diff.class})”
puts “date_one + diff.to_i = #{date_one + diff.to_i}”

output:
date_one = 2008-01-01
date_two = 2008-02-02
date_two - date_one = 32 (class:Rational)
date_one + diff.to_i = 2008-02-02

M

Heinrich P. wrote:

DateDiff = CertValidDate - actualDate

but I get this error message: Â undefined method `-’ for
“2008-09-10”:String (NoMethodError)

You need a Date object, not a String. Like this:
Date.parse(“2008-09-10”) - Date.today

HTH,
Sebastian

Mike McKinney wrote:

na, you are trying to execute the “-” method on a string (which doesn’t
exist)

No, he’s not. You’re in the wrong subthread.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs