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(parser) ⇒ Object
convert to XML.
Constructor Details
#initialize(value = nil, format = CFDate::TIMESTAMP_UNIX) ⇒ CFDate
set value to defined state
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/rbCFTypes.rb', line 106 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
92 93 94 95 |
# File 'lib/rbCFTypes.rb', line 92 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
98 99 100 101 102 103 |
# File 'lib/rbCFTypes.rb', line 98 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
128 129 130 131 132 133 134 |
# File 'lib/rbCFTypes.rb', line 128 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
119 120 121 122 123 124 125 |
# File 'lib/rbCFTypes.rb', line 119 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
144 145 146 |
# File 'lib/rbCFTypes.rb', line 144 def to_binary(bplist) bplist.date_to_binary(@value) end |
#to_xml(parser) ⇒ Object
convert to XML
137 138 139 140 141 |
# File 'lib/rbCFTypes.rb', line 137 def to_xml(parser) n = parser.new_node('date') n = parser.append_node(n, parser.new_text(CFDate::date_string(@value))) n end |