# Date formatting bug?

**URL:** <https://www.ruby-forum.com/t/date-formatting-bug/165240>\
**Category:** Ruby\
**Created:** [April 10, 2009, 5:03pm UTC](https://www.ruby-forum.com/t/date-formatting-bug/165240 "2009-04-10T17:03:34Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [April 10, 2009, 5:03pm UTC](https://www.ruby-forum.com/t/date-formatting-bug/165240/1 "2009-04-10T17:03:34Z")

</div>

Why does the year get changed in this code?

require ‘date’  
s = ‘2998-12-31’  
date = Date.parse(s)  
f = date.strftime(’%d-%b-%G’)  
puts f

The output is 31-Dec-2999.  
This doesn’t seem to happen with earlier years.  
This happens with Ruby 1.8.6 and JRuby 1.2.0RC2.

---

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [April 10, 2009, 5:35pm UTC](https://www.ruby-forum.com/t/date-formatting-bug/165240/2 "2009-04-10T17:35:50Z")

</div>

Mark V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Why does the year get changed in this code?
> 
> require ‘date’  
> s = ‘2998-12-31’  
> date = Date.parse(s)  
> f = date.strftime(‘%d-%b-%G’)

It’s because you asked for %G. If you wanted the actual year component  
of the date, you would have used %Y. man strftime…

m.
