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.