class CFPropertyList::CFDate

This class holds Time values. While Apple uses seconds since 2001, the rest of the world uses seconds since 1970. So if you access value directly, you get the Time class. If you access via #get_value you either geht the timestamp or the Apple timestamp

Constants

DATE_DIFF_APPLE_UNIX
TIMESTAMP_APPLE
TIMESTAMP_UNIX

Public Class Methods

date_string(val) click to toggle source

create a XML date strimg from a time object

# File lib/cfpropertylist/rbCFTypes.rb, line 148
def CFDate.date_string(val)
  # 2009-05-13T20:23:43Z
  val.getutc.strftime("%Y-%m-%dT%H:%M:%SZ")
end
new(value = nil,format=CFDate::TIMESTAMP_UNIX) click to toggle source

set value to defined state

# File lib/cfpropertylist/rbCFTypes.rb, line 162
def initialize(value = nil,format=CFDate::TIMESTAMP_UNIX)
  if(value.is_a?(Time) || value.nil?) then
    @value = value.nil? ? Time.now : value
  elsif value.instance_of? Date
    @value = Time.utc(value.year, value.month, value.day, 0, 0, 0)
  elsif value.instance_of? DateTime
    @value = value.to_time.utc
  else
    set_value(value,format)
  end
end
parse_date(val) click to toggle source

parse a XML date string

# File lib/cfpropertylist/rbCFTypes.rb, line 154
def CFDate.parse_date(val)
  # 2009-05-13T20:23:43Z
  val =~ %r{^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$}
  year,month,day,hour,min,sec = $1, $2, $3, $4, $5, $6
  return Time.utc(year,month,day,hour,min,sec).getlocal
end

Public Instance Methods

get_value(format=CFDate::TIMESTAMP_UNIX) click to toggle source

get timestamp, either UNIX or Apple timestamp

# File lib/cfpropertylist/rbCFTypes.rb, line 184
def get_value(format=CFDate::TIMESTAMP_UNIX)
  if(format == CFDate::TIMESTAMP_UNIX) then
    @value.to_i
  else
    @value.to_f - CFDate::DATE_DIFF_APPLE_UNIX
  end
end
set_value(value,format=CFDate::TIMESTAMP_UNIX) click to toggle source

set value with timestamp, either Apple or UNIX

# File lib/cfpropertylist/rbCFTypes.rb, line 175
def set_value(value,format=CFDate::TIMESTAMP_UNIX)
  if(format == CFDate::TIMESTAMP_UNIX) then
    @value = Time.at(value)
  else
    @value = Time.at(value + CFDate::DATE_DIFF_APPLE_UNIX)
  end
end
to_binary(bplist) click to toggle source

convert to binary

# File lib/cfpropertylist/rbCFTypes.rb, line 200
def to_binary(bplist)
  bplist.date_to_binary(@value)
end
to_plain(plist) click to toggle source
# File lib/cfpropertylist/rbCFTypes.rb, line 204
def to_plain(plist)
  @value.strftime("%Y-%m-%d %H:%M:%S %z")
end
to_xml(parser) click to toggle source

convert to XML

# File lib/cfpropertylist/rbCFTypes.rb, line 193
def to_xml(parser)
  n = parser.new_node('date')
  n = parser.append_node(n, parser.new_text(CFDate::date_string(@value)))
  n
end