Extending strftime

can i change the options which is recognized by strftime
eg:
‘%Y %m %d’ will apply the format of YYYY mm dd

can i do something like extending strftime to recognize ‘YYYY mm dd’
instead ?

because right now , i am running the format string which i get(YYYY mm
dd) through a regex and converting them to the parameters which strftime
recognizes

or please do suggest alternate methods

Lin Wj wrote:

can i change the options which is recognized by strftime
eg:
‘%Y %m %d’ will apply the format of YYYY mm dd

can i do something like extending strftime to recognize ‘YYYY mm dd’
instead ?

because right now , i am running the format string which i get(YYYY mm
dd) through a regex and converting them to the parameters which strftime
recognizes

That sounds like a perfectly reasonable approach.

If you really want to, you can monkey-patch the built-in class (I’d
advise against this though, except in small self-contained scripts)

class Time
alias :old_strftime :strftime
STRFMAP = {
‘YYYY’ => ‘%Y’,
‘mm’ => ‘%m’,
‘dd’ => ‘%d’,
}
STRFRE = /#{STRFMAP.keys.join("|")}/

def strftime(arg)
old_strftime(arg.gsub(STRFRE) { STRFMAP[$&] })
end
end

puts Time.now.strftime(“YYYY-mm-dd”)

Note that by not using the % escape syntax, you may end up with some
subtle bugs:

puts Time.now.strftime(“Today’s YYYY-mm-dd, buddy!”)

=> Today’s 2009-01-13, bu13y!

You can restrict the regular expression to require a word boundary:

STRFRE = /\b(#{STRFMAP.keys.join("|")})\b/

But in this case, a string like “YYYYmmdd” doesn’t work.

On Jan 13, 6:41 am, Lin Wj [email protected] wrote:

can i change the options which is recognized by strftime
eg:
‘%Y %m %d’ will apply the format of YYYY mm dd

can i do something like extending strftime to recognize ‘YYYY mm dd’
instead ?

why not write your own Time method? you don’t need to override
strftime.

because right now , i am running the format string which i get(YYYY mm
dd) through a regex and converting them to the parameters which strftime
recognizes

or please do suggest alternate methods

T.

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