Class: OpenEHR::RM::DataTypes::Quantity::DateTime::DvDateTime
- Inherits:
-
DvTemporal
- Object
- Basic::DataValue
- OpenEHR::RM::DataTypes::Quantity::DvOrdered
- OpenEHR::RM::DataTypes::Quantity::DvQuantified
- OpenEHR::RM::DataTypes::Quantity::DvAbsoluteQuantity
- DvTemporal
- OpenEHR::RM::DataTypes::Quantity::DateTime::DvDateTime
- Defined in:
- lib/open_ehr/rm/data_types/quantity/date_time.rb
Constant Summary
Constants included from AssumedLibraryTypes::TimeDefinitions
AssumedLibraryTypes::TimeDefinitions::DAYS_IN_LEAP_YEAR, AssumedLibraryTypes::TimeDefinitions::DAYS_IN_WEEK, AssumedLibraryTypes::TimeDefinitions::DAYS_IN_YEAR, AssumedLibraryTypes::TimeDefinitions::HOURS_IN_DAY, AssumedLibraryTypes::TimeDefinitions::MAX_DAYS_IN_MONTH, AssumedLibraryTypes::TimeDefinitions::MAX_DAYS_IN_YEAR, AssumedLibraryTypes::TimeDefinitions::MINUTES_IN_HOUR, AssumedLibraryTypes::TimeDefinitions::MONTH_IN_YEAR, AssumedLibraryTypes::TimeDefinitions::NOMINAL_DAYS_IN_MONTH, AssumedLibraryTypes::TimeDefinitions::NOMINAL_DAYS_IN_YEAR, AssumedLibraryTypes::TimeDefinitions::SECONDS_IN_MINUTE
Constants included from Support::Definition::BasicDefinition
Support::Definition::BasicDefinition::CR, Support::Definition::BasicDefinition::LF
Instance Attribute Summary
Attributes included from AssumedLibraryTypes::ISO8601DateModule
Attributes included from AssumedLibraryTypes::ISO8601TimeModule
#fractional_second, #hour, #minute, #second
Attributes inherited from OpenEHR::RM::DataTypes::Quantity::DvAbsoluteQuantity
Attributes inherited from OpenEHR::RM::DataTypes::Quantity::DvQuantified
Attributes inherited from OpenEHR::RM::DataTypes::Quantity::DvOrdered
#normal_range, #normal_status, #other_refference_ranges
Attributes inherited from Basic::DataValue
Instance Method Summary collapse
Methods included from AssumedLibraryTypes::ISO8601DateTimeModule
Methods included from AssumedLibraryTypes::ISO8601DateModule
#as_string, #day_unknown?, #is_extended?, #is_partial?, #month_unknown?, #to_days
Methods included from AssumedLibraryTypes::TimeDefinitions
valid_day?, valid_hour?, valid_minute?, valid_month?, valid_second?, valid_year?
Methods included from AssumedLibraryTypes::ISO8601TimeModule
#as_string, #has_fractional_second?, #is_decimal_sign_comma?, #is_extended?, #is_partial?, #minute_unknown?, #second_unknown?, #timezone, #timezone=, #to_second
Methods inherited from DvTemporal
Methods inherited from OpenEHR::RM::DataTypes::Quantity::DvAbsoluteQuantity
Methods inherited from OpenEHR::RM::DataTypes::Quantity::DvQuantified
#<=>, #accuracy_unknown?, #initialize, valid_magnitude_status?
Methods inherited from OpenEHR::RM::DataTypes::Quantity::DvOrdered
#<=>, #initialize, #is_normal?, #is_simple?, #is_strictly_comparable_to?, #other_reference_ranges=
Methods inherited from Basic::DataValue
Constructor Details
This class inherits a constructor from OpenEHR::RM::DataTypes::Quantity::DateTime::DvTemporal
Instance Method Details
#diff(other) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/open_ehr/rm/data_types/quantity/date_time.rb', line 173 def diff(other) if self.magnitude >= other.magnitude past, future = other, self else past, future = self, other end past_date, past_time = split_date_time(past) future_date, future_time = split_date_time(future) time_diff = future_time.magnitude - past_time.magnitude if future_time.magnitude < past_time.magnitude future_date.day = future_date.day - 1 time_diff += 24 * 60 * 60 end date_duration = past_date.diff(future_date) hour = (time_diff / 60 / 60).to_i minute = ((time_diff - hour*60*60)/60).to_i second = (time_diff - hour * 60 *60 - minute * 60).to_i str = date_duration.value + 'T' + hour.to_s + 'H' + minute.to_s + 'M' + second.to_s if @fractional_second.nil? return DvDuration.new(:value => str +'S') else fractional_second = ((time_diff - time_diff.to_i)*1000000.0).to_i/1000000.0 return DvDuration.new(:value => str + fractional_second.to_s[1..-1] + 'S') end end |
#magnitude ⇒ Object
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/open_ehr/rm/data_types/quantity/date_time.rb', line 150 def magnitude hour, minute = @hour, @minute if @timezone if @timezone.sign == -1 hour -= @timezone.hour minute -= @timezone.minute elsif @timezone.sign == +1 hour += @timezone.hour minute += @timezone.minute end end seconds = (((@year * 365.24 + @month * 30.42 + @day) * 24 + hour) * 60 + minute) * 60 + @second if @fractional_second.nil? return seconds else return seconds + @fractional_second end end |
#value=(value) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/open_ehr/rm/data_types/quantity/date_time.rb', line 137 def value=(value) super(value) iso8601date_time = AssumedLibraryTypes::ISO8601DateTime.new(value) self.year = iso8601date_time.year self.month = iso8601date_time.month self.day = iso8601date_time.day self.minute = iso8601date_time.minute self.second = iso8601date_time.second self.hour = iso8601date_time.hour self.fractional_second = iso8601date_time.fractional_second self.timezone = iso8601date_time.timezone end |