class DateTime

def self.civil_from_format(utc_or_local, year, month=1, day=1, hour=0, min=0, sec=0)

# => Mon, 17 Dec 2012 00:00:00 +0000
DateTime.civil_from_format :local, 2012, 12, 17
# => Sun, 01 Jan 2012 00:00:00 +0300
DateTime.civil_from_format :local, 2012

offset is zero.
Returns DateTime with local offset for given year if format is local else
def self.civil_from_format(utc_or_local, year, month=1, day=1, hour=0, min=0, sec=0)
  if utc_or_local.to_sym == :local
    offset = ::Time.local(year, month, day).utc_offset.to_r / 86400
  else
    offset = 0
  end
  civil(year, month, day, hour, min, sec, offset)
end