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.
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
Post a Comment