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 = Time.now
=> 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.
Combinations:

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

t.strftime("%H:%M:%S")

 => "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}"
 end
end

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

# calling and printing strftime results on current date

puts "DateTime: #{cur_date}\n"

puts "\n\nFor a to z"
print_strftime_formats(a,cur_date)

puts "\n\nFor A to Z"
print_strftime_formats(A,cur_date)

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.

Comments

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'

Active Scaffold : Add radio buttons to your form ruby on rails ?

Active Scaffold : Add radio buttons to your form ruby on rails ?

The way to add radio buttons to your active scaffold create/update from is as shown below

#Controller

class UsersController < ApplicationController
active_scaffold :user do |config|
config.label = “Users”
config.columns = [:name, :gender]
config.columns[:gender].form_ui = :radio
config.columns[:gender].options[:options] = [['Male', '1'], ['Female','2']]
end
end

Get the Current url in ruby on rails

request.refererrequest.fullpathrequest.fullpath.split("?")[0]request.referer or request.env['HTTP_REFERER'] your controller to get the referer url. 

--------------------
request.original_url
request.url
request.host_with_port
<link rel="canonical" href="<%= request.url %>" />
<%=request.path%>
How can I get the current absolute URL in my Ruby on Rails view?
The request.request_uri only returns the relative URL.
request.env['REQUEST_URI']

 For Rails 3.2 or Rails 4 you should use request.original_url to get the current URL. More detail.

For Rails 3: You want "#{request.protocol}#{request.host_with_port}#{request.fullpath}", since request.url is now deprecated.

For Rails 2: You want request.url instead of request.request_uri. This combines the protocol (usually http://) with the host, and request_uri to give you the full address