Skip to main content

strftime – Format Date Time in Ruby

strftime – Format Date Time in Ruby ?

In Ruby, you have to format or convert time from one format to other many a times. You can use library method strftime available to perform formatting operations.

Syntax of strftime: strftime( format )
Returns: Result in requested format

First of all, let us create a new variable in which we get current time to be formatted in various formats,

t =
=> 2013-09-12 22:49:27 +0530

Now, we have variable t holding current time value, now below are the examples of,
Most Commonly used formats
Code     Output     Description
t.strftime("%H")     => "22"     # Gives Hour of the time in 24 hour clock format
t.strftime("%I")     => "10"     # Gives Hour of the time in 12 hour clock format
t.strftime("%M")     => "49"     # Gives Minutes of the time
t.strftime("%S")     => "27"     # Gives Seconds of the time
t.strftime("%Y")     => "2013"     # Gives Year of the time
t.strftime("%m")     => "09"     # Gives month of the time
t.strftime("%d")     => "12"     # Gives day of month of the time
t.strftime("%w")     => "4"     # Gives day of week of the time
t.strftime("%a")     => "Thu"     # Gives name of week day in short form of the
t.strftime("%A")     => "Thursday"     # Gives week day in full form of the time
t.strftime("%b")     => "Sep"     # Gives month in short form of the time
t.strftime("%B")     => "September"     # Gives month in full form of the time
t.strftime("%y")     => "13"     # Gives year without century of the time
t.strftime("%Y")     => "2013"     # Gives year without century  of the time
t.strftime("%Z")     => "IST"     # Gives Time Zone of the time
t.strftime("%p")     => "PM"     # Gives AM / PM of the time

These are the almost all formats that are required.

You can try these formats in combination too,
For example,


 => "22:49:27"
Code to print all formats

# Function to print strftime results
def print_strftime_formats(a,cur_date)
 a.each do |format|
   b = "%#{format}"
   output = cur_date.strftime(b)
   puts "t.strftime('#{b}'), => #{output}"

a = ('a'..'z').to_a
A = ('A'..'Z').to_acur_date =

# calling and printing strftime results on current date

puts "DateTime: #{cur_date}\n"

puts "\n\nFor a to z"

puts "\n\nFor A to Z"

You can refer code at Github OR download this code.
The output of the above code is given below for the reference:
For 'a' to 'z'
Code     Output
t.strftime('%a')     => Thu
t.strftime('%b')     => Jan
t.strftime('%c')     => Thu Jan 23 16:38:02 2014
t.strftime('%d')     => 23
t.strftime('%e')     => 23
t.strftime('%f')     => %f # Not Useful
t.strftime('%g')     => 14
t.strftime('%h')     => Jan
t.strftime('%i')     => %i # Not Useful
t.strftime('%j')     => 023
t.strftime('%k')     => 16
t.strftime('%l')     => 4
t.strftime('%m')     => 01
t.strftime('%n')     => # Not Useful
t.strftime('%o')     => %o
t.strftime('%p')     => PM
t.strftime('%q')     => %q
t.strftime('%r')     => 04:38:02 PM
t.strftime('%s')     => 1390475282
t.strftime('%t')     => # Not Useful
t.strftime('%u')     => 4
t.strftime('%v')     => 23-JAN-2014
t.strftime('%w')     => 4
t.strftime('%x')     => 01/23/14
t.strftime('%y')     => 14
t.strftime('%z')     => +0530
For 'A' to 'Z'
Code     Output
t.strftime('%A')     => Thursday
t.strftime('%B')     => January
t.strftime('%C')     => 20
t.strftime('%D')     => 01/23/14
t.strftime('%E')     => %E # Not Useful
t.strftime('%F')     => 2014-01-23
t.strftime('%G')     => 2014
t.strftime('%H')     => 16
t.strftime('%I')     => 04
t.strftime('%J')     => %J # Not Useful
t.strftime('%K')     => %K # Not Useful
t.strftime('%L')     => 485
t.strftime('%M')     => 38
t.strftime('%N')     => 485141000
t.strftime('%O')     => %O # Not Useful
t.strftime('%P')     => pm
t.strftime('%Q')     => %Q # Not Useful
t.strftime('%R')     => 16:38
t.strftime('%S')     => 02
t.strftime('%T')     => 16:38:02
t.strftime('%U')     => 03
t.strftime('%V')     => 04
t.strftime('%W')     => 03
t.strftime('%X')     => 16:38:02
t.strftime('%Y')     => 2014
t.strftime('%Z')     => IST

So, you can tweak your format as output required for your purpose. I guess, Formatting of time is easy for you now.


Popular posts from this blog

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).?

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).) In rails?

1)change the gemfile in mysql version
 gem 'mysql2'

2)Change to mysql2 version
 gem 'mysql2','0.3.20'

Get user accessing ip address in rails?

Get user accessing ip address rails?

request.ip ->returns the ip, whether is is a local proxy ip (localhost address) or not.
*request.remote_ip -> is smarter and gets the ip address of the client outside of local proxies.
3)If you are using apache in front of a mongrel, then remote_ip will return the source address of the request, which in this case will be local host because the Apache web server is making the request, so instead put this in your controller:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

PayUMoney Integration in Ruby on Rails

PayUMoney Integration in Ruby on Rails

Generating Cheksum in Payu
   Hash or Checksum
= sha512(key|txnid|amount|productinfo|firstname|email|u

Controller Code Will be
def payumoney
  @key = "gtKFFx"
  @salt =  "eCwWELxi"
  val = "#{key|txnid|amount|productinfo|firstname|email|u
 @checksum = Digest::SHA512.hexdigest("#{val}")

<form action="" method='post' id='sub'  >
    <input type="hidden" name="key" value="<%=@key%>">
    <input type="hidden" name="hash" value="<%=@checksum%>">
    <input type="hidden" name="txnid" value="TXN1234">
    <input type="hidden" name="amount" value="200">
    <input type="hidden" name="firstname" value=&quo…