# Date format

**URL:** <https://www.ruby-forum.com/t/date-format/142998>\
**Category:** Ruby\
**Created:** [July 14, 2008, 11:02am UTC](https://www.ruby-forum.com/t/date-format/142998 "2008-07-14T11:02:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 14, 2008, 11:02am UTC](https://www.ruby-forum.com/t/date-format/142998/1 "2008-07-14T11:02:33Z")

</div>

Hi  
I have code  
sd\_ticket\_end\_date=Date.today  
This gives 07/14/2008 00:00  
How can I format this to 2008-07-14

Thanks in advance  
Sijo

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 14, 2008, 11:15am UTC](https://www.ruby-forum.com/t/date-format/142998/2 "2008-07-14T11:15:26Z")

</div>

From: removed\_email\_address@domain.invalid [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]

# sd\_ticket\_end\_date=Date.today

# This gives 07/14/2008 00:00

# How can I format this to 2008-07-14

just convert it to string and you’ll get pleasant surprise 🙂

irb(main):006:0\> sd\_ticket\_end\_date.to\_s  
=\> “2008-07-14”

if you want more fancy, you can use #strftime

irb(main):007:0\> sd\_ticket\_end\_date.strftime “Date is %Y-%m-%d”  
=\> “Date is 2008-07-14”

just use the formatting as documented in time#strftime,

## botp@botp-desktop:~$ qri time.strftime ---------------------------------------------------------- Time#strftime time.strftime( string ) =\> string

```
 Formats time according to the directives in the given format
 string. Any text not listed as a directive will be passed through
 to the output string.

 Format meaning:

   %a - The abbreviated weekday name (``Sun'')
   %A - The full weekday name (``Sunday'')
   %b - The abbreviated month name (``Jan'')
   %B - The full month name (``January'')
   %c - The preferred local date and time representation
   %d - Day of the month (01..31)
   %H - Hour of the day, 24-hour clock (00..23)
   %I - Hour of the day, 12-hour clock (01..12)
   %j - Day of the year (001..366)
   %m - Month of the year (01..12)
   %M - Minute of the hour (00..59)
   %p - Meridian indicator (``AM'' or ``PM'')
   %S - Second of the minute (00..60)
   %U - Week number of the current year,
           starting with the first Sunday as the first
           day of the first week (00..53)
   %W - Week number of the current year,
           starting with the first Monday as the first
           day of the first week (00..53)
   %w - Day of the week (Sunday is 0, 0..6)
   %x - Preferred representation for the date alone, no time
   %X - Preferred representation for the time alone, no date
   %y - Year without a century (00..99)
   %Y - Year with century
   %Z - Time zone name
   %% - Literal ``%'' character

    t = Time.now
    t.strftime("Printed on %m/%d/%Y") #=> "Printed on 04/09/2003"
    t.strftime("at %I:%M%p") #=> "at 08:56AM"

```

hth.  
kind regards -botp

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 14, 2008, 12:15pm UTC](https://www.ruby-forum.com/t/date-format/142998/3 "2008-07-14T12:15:55Z")

</div>

Hi  
Thanks for the reply  
Sijo

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 14, 2008, 2:12pm UTC](https://www.ruby-forum.com/t/date-format/142998/4 "2008-07-14T14:12:50Z")

</div>

Hi  
Could you please help this also…I have a string  
sd\_ticket\_end\_date= 15/01/2008  
Then how can I format this to 01/15/2008

Sijo

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 15, 2008, 3:21am UTC](https://www.ruby-forum.com/t/date-format/142998/5 "2008-07-15T03:21:53Z")

</div>

From: removed\_email\_address@domain.invalid [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]

# Could you please help this also…I have a string

# sd\_ticket\_end\_date= 15/01/2008

# Then how can I format this to 01/15/2008

Hi Sijo,  
if it’s a string, then treat it like a string,

irb(main):002:0\> sd\_ticket\_end\_date= “15/01/2008”  
=\> “15/01/2008”

irb(main):004:0\> d,m,y=sd\_ticket\_end\_date.split “/”  
=\> [“15”, “01”, “2008”]

irb(main):011:0\> m+“/”+d+“/”+y  
=\> “01/15/2008”

or the fancy,

irb(main):009:0\> [m,d,y].join “/”  
=\> “01/15/2008”

basically, just relax and play w ruby…

kind regards -botp

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 15, 2008, 6:25am UTC](https://www.ruby-forum.com/t/date-format/142998/6 "2008-07-15T06:25:54Z")

</div>

Raveendran J. wrote:

> a=“15/01/2008”  
> x=a[0,2]  
> a[0,2]=a[3,2]  
> a[3,2]=x  
> puts a =\> 01/15/2008

or you could use a = a[3,3]+a[0,3]+a[6,4]

---

<div class="post-metadata">

**Author:** ![sijo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/da6949/32.png) [@sijo](https://www.ruby-forum.com/u/sijo)\
**Post date:** [July 15, 2008, 6:13am UTC](https://www.ruby-forum.com/t/date-format/142998/7 "2008-07-15T06:13:37Z")

</div>

Sijo Kg wrote:

> Hi  
> Could you please help this also…I have a string  
> sd\_ticket\_end\_date= 15/01/2008  
> Then how can I format this to 01/15/2008
> 
> Sijo

Example 1:

a=“15/01/2008”  
x=a[0,2]  
a[0,2]=a[3,2]  
a[3,2]=x  
puts a =\> 01/15/2008

Regards,  
P.Raveendran

> **[Raveendran](https://raveendran.wordpress.com)**
>
> Nothing is impossible...
