From: "Berger, Daniel" Date: 2006-05-24T02:51:44+09:00 Subject: Fun with Time#to_s and locale 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.