Anyone? Anyone? Buehler? Buehler?
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.
···
-----Original Message-----
From: Berger, Daniel [mailto:Daniel.Berger@qwest.com]
Sent: Tuesday, May 23, 2006 11:52 AM
To: ruby-talk ML
Subject: Fun with Time#to_s and localeHi 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
endbuffer = buffer[ /^[^\0]*/ ]
# Splice the hours, minutes and seconds in
buffer.split.insert(2, "#{hour}:#{min}:#{sec}
#{zone}").join(' ')
end
endif $0 == __FILE__
LANG_FRENCH = 0x0c
LANG_GERMAN = 0x07
LANG_SPANISH = 0x0ap 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"
endI've no idea how to do this on non-Windows systems. Is there
an easier way?