Class: OpenEHR::RM::DataTypes::Quantity::DateTime::DvTime
- 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::DvTime
- Includes:
- AssumedLibraryTypes::ISO8601TimeModule
- Defined in:
- lib/openehr/rm/data_types/quantity/date_time.rb
Constant Summary
Constants included from AssumedLibraryTypes::TimeDefinitions
AssumedLibraryTypes::TimeDefinitions::DAYS_IN_LEAP_YEAR, AssumedLibraryTypes::TimeDefinitions::DAYS_IN_MONTH, 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::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_reference_ranges
Attributes inherited from Basic::DataValue
Instance Method Summary collapse
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 included from AssumedLibraryTypes::TimeDefinitions
valid_day?, valid_hour?, valid_minute?, valid_month?, valid_second?, valid_year?
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?
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
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/openehr/rm/data_types/quantity/date_time.rb', line 115 def diff(other) diff = (other.magnitude - self.magnitude).abs hour = (diff / 60 / 60).to_i minute = ((diff - hour*60*60)/60).to_i second = (diff - hour * 60 *60 - minute * 60).to_i fractional_second = ((diff - diff.to_i)*1000000.0).to_i/1000000.0 str = 'P0Y0M0W0DT' + hour.to_s + 'H' + minute.to_s + 'M' + second.to_s if @fractional_second.nil? str += 'S' else str += fractional_second.to_s[1..-1] + 'S' end return DvDuration.new(:value => str) end |
#magnitude ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/openehr/rm/data_types/quantity/date_time.rb', line 103 def magnitude if @fractional_second.nil? && @second.nil? && @minute.nil? return @hour * 60 * 60 elsif @fractional_second.nil? && @second.nil? return @hour * 60 * 60 + @minute * 60 elsif @fractional_second.nil? return @hour * 60 * 60 + @minute * 60 + @second else return @hour*60*60+@minute* 60 + @second + @fractional_second end end |
#value=(value) ⇒ Object
93 94 95 96 97 98 99 100 101 |
# File 'lib/openehr/rm/data_types/quantity/date_time.rb', line 93 def value=(value) super(value) iso8601_time = OpenEHR::AssumedLibraryTypes::ISO8601Time.new(value) @hour = iso8601_time.hour @minute = iso8601_time.minute @second = iso8601_time.second @fractional_second = iso8601_time.fractional_second @timezone = iso8601_time.timezone end |