Class: CFPropertyList::CFDate
Overview
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
Constant Summary collapse
- TIMESTAMP_APPLE =
0
- TIMESTAMP_UNIX =
1
- DATE_DIFF_APPLE_UNIX =
978307200
Instance Attribute Summary
Attributes inherited from CFType
Class Method Summary collapse
-
.date_string(val) ⇒ Object
create a XML date strimg from a time object.
-
.parse_date(val) ⇒ Object
parse a XML date string.
Instance Method Summary collapse
-
#get_value(format = CFDate::TIMESTAMP_UNIX) ⇒ Object
get timestamp, either UNIX or Apple timestamp.
-
#initialize(value = nil, format = CFDate::TIMESTAMP_UNIX) ⇒ CFDate
constructor
set value to defined state.
-
#set_value(value, format = CFDate::TIMESTAMP_UNIX) ⇒ Object
set value with timestamp, either Apple or UNIX.
-
#to_binary(bplist) ⇒ Object
convert to binary.
-
#to_xml ⇒ Object
convert to XML.
Constructor Details
#initialize(value = nil, format = CFDate::TIMESTAMP_UNIX) ⇒ CFDate
set value to defined state
94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rbCFTypes.rb', line 94 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 |
Class Method Details
.date_string(val) ⇒ Object
create a XML date strimg from a time object
80 81 82 83 |
# File 'lib/rbCFTypes.rb', line 80 def CFDate.date_string(val) # 2009-05-13T20:23:43Z val.getutc.strftime("%Y-%m-%dT%H:%M:%SZ") end |
.parse_date(val) ⇒ Object
parse a XML date string
86 87 88 89 90 91 |
# File 'lib/rbCFTypes.rb', line 86 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 |
Instance Method Details
#get_value(format = CFDate::TIMESTAMP_UNIX) ⇒ Object
get timestamp, either UNIX or Apple timestamp
116 117 118 119 120 121 122 |
# File 'lib/rbCFTypes.rb', line 116 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) ⇒ Object
set value with timestamp, either Apple or UNIX
107 108 109 110 111 112 113 |
# File 'lib/rbCFTypes.rb', line 107 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) ⇒ Object
convert to binary
130 131 132 |
# File 'lib/rbCFTypes.rb', line 130 def to_binary(bplist) bplist.date_to_binary(@value) end |
#to_xml ⇒ Object
convert to XML
125 126 127 |
# File 'lib/rbCFTypes.rb', line 125 def to_xml LibXML::XML::Node.new('date') << LibXML::XML::Node.new_text(CFDate::date_string(@value)) end |