Class: CFPropertyList::CFDate
- Defined in:
- lib/cfpropertylist/rbCFTypes.rb
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(parser) ⇒ Object
convert to XML.
Constructor Details
#initialize(value = nil, format = CFDate::TIMESTAMP_UNIX) ⇒ CFDate
set value to defined state
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 113 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
99 100 101 102 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 99 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
105 106 107 108 109 110 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 105 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
135 136 137 138 139 140 141 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 135 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
126 127 128 129 130 131 132 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 126 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
151 152 153 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 151 def to_binary(bplist) bplist.date_to_binary(@value) end |
#to_xml(parser) ⇒ Object
convert to XML
144 145 146 147 148 |
# File 'lib/cfpropertylist/rbCFTypes.rb', line 144 def to_xml(parser) n = parser.new_node('date') n = parser.append_node(n, parser.new_text(CFDate::date_string(@value))) n end |