# Fun with Time#to\_s and locale

**URL:** <https://www.ruby-forum.com/t/fun-with-time-to-s-and-locale/95171>\
**Category:** Ruby\
**Created:** [May 23, 2006, 7:54pm UTC](https://www.ruby-forum.com/t/fun-with-time-to-s-and-locale/95171 "2006-05-23T19:54:33Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![BergerS\_Daniel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bc8723/32.png) [@BergerS\_Daniel](https://www.ruby-forum.com/u/BergerS_Daniel)\
**Post date:** [May 23, 2006, 7:54pm UTC](https://www.ruby-forum.com/t/fun-with-time-to-s-and-locale/95171/1 "2006-05-23T19:54:33Z")

</div>

Hi all,

I was futzing around with Time objects and locale. Searching the  
archives I didn’t really see anything that let me get Time objects back  
in the locale string that I want.

Did I reinvent the wheel?

require ‘Win32API’

class Time  
GetDateFormat = Win32API.new(‘kernel32’, ‘GetDateFormat’, ‘LLPPPL’,  
‘I’)

def to\_s(lang=0)  
buffer = 0.chr \* 100  
systime = [year, mon, wday, day, hour, min, sec].pack(‘S\*’)  
picture = ‘dddd MMM dd yyyy’ # Or change ‘dddd’ to ‘ddd’

```
  if GetDateFormat.call(lang, 0, systime, picture, buffer,

```

buffer.size) == 0  
raise get\_last\_error  
end

```
  buffer = buffer[/^[^\0]*/ ]

  # Splice the hours, minutes and seconds in
  buffer.split.insert(2, "#{hour}:#{min}:#{sec} #{zone}").join(' ')

```

end  
end

if $0 == **FILE**  
LANG\_FRENCH = 0x0c  
LANG\_GERMAN = 0x07  
LANG\_SPANISH = 0x0a

p Time.now.to\_s # “Tuesday May 11:48:51 MDT 23 2006”  
p Time.now.to\_s(LANG\_GERMAN) # “Dienstag Mai 11:48:51 MDT 23 2006”  
p Time.now.to\_s(LANG\_SPANISH) # “martes may 11:48:51 MDT 23 2006”  
p Time.now.to\_s(LANG\_FRENCH) # “mardi mai 11:48:51 MDT 23 2006”  
end

I’ve no idea how to do this on non-Windows systems. Is there an easier  
way?

Regards,

Dan

This communication is the property of Qwest and may contain confidential  
or  
privileged information. Unauthorized use of this communication is  
strictly  
prohibited and may be unlawful. If you have received this communication  
in error, please immediately notify the sender by reply e-mail and  
destroy  
all copies of the communication and any attachments.
