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
99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rbCFTypes.rb', line 99 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
85 86 87 88 |
# File 'lib/rbCFTypes.rb', line 85 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
91 92 93 94 95 96 |
# File 'lib/rbCFTypes.rb', line 91 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
121 122 123 124 125 126 127 |
# File 'lib/rbCFTypes.rb', line 121 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
112 113 114 115 116 117 118 |
# File 'lib/rbCFTypes.rb', line 112 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
137 138 139 |
# File 'lib/rbCFTypes.rb', line 137 def to_binary(bplist) bplist.date_to_binary(@value) end |
#to_xml(parser) ⇒ Object
convert to XML
130 131 132 133 134 |
# File 'lib/rbCFTypes.rb', line 130 def to_xml(parser) n = parser.new_node('date') n = parser.append_node(n, parser.new_text(CFDate::date_string(@value))) n end |