Class: When::TM::DateAndTime
- Inherits:
-
CalDate
- Object
- TemporalPosition
- CalDate
- When::TM::DateAndTime
- Defined in:
- lib/when_exe/tmposition.rb,
lib/when_exe/inspect.rb
Overview
時刻を伴った日付
see gml schema
Constant Summary
Constants inherited from CalDate
Constants inherited from TemporalPosition
TemporalPosition::AMPM, TemporalPosition::DateTimeInstanceMethods, TemporalPosition::Format, TemporalPosition::HashProperty
Constants included from Coordinates
Coordinates::Bahai, Coordinates::Chinese, Coordinates::Common, Coordinates::DefaultDateIndices, Coordinates::DefaultDayIndex, Coordinates::DefaultTimeIndices, Coordinates::Indian, Coordinates::Iranian, Coordinates::Javanese, Coordinates::MATCH, Coordinates::Mayan, Coordinates::PERIOD, Coordinates::PERIOD_NAME, Coordinates::PRECISION, Coordinates::PRECISION_NAME, Coordinates::Russian, Coordinates::Tibetan, Coordinates::VALUE, Coordinates::Yi
Constants included from When
AUTHOR, CENTURY, COPYRIGHT, DAY, DECADE, EUCJP, HOUR, MINUTE, MONTH, MinusInfinity, Month, P1D, P1M, P1W, P1Y, PT1H, PT1M, PT1S, PlusInfinity, RootDir, SECOND, STRING, SYSTEM, SourceURI, When::TimeValue, UTF8, VERSION, W31J, WEEK, Week, YEAR, YEARS
Constants included from Parts::Resource
Parts::Resource::ConstList, Parts::Resource::ConstTypes, Parts::Resource::IRIDecode, Parts::Resource::IRIDecodeTable, Parts::Resource::IRIEncode, Parts::Resource::IRIEncodeTable, Parts::Resource::IRIHeader, Parts::Resource::LabelProperty
Constants included from IndeterminateValue
IndeterminateValue::After, IndeterminateValue::Before, IndeterminateValue::I, IndeterminateValue::Max, IndeterminateValue::Min, IndeterminateValue::Now, IndeterminateValue::S, IndeterminateValue::Unknown
Instance Attribute Summary collapse
-
#clk_time ⇒ When::TM::ClockTime
(also: #clkTime)
readonly
時刻要素.
Attributes inherited from CalDate
#cal_date, #calendar_era, #calendar_era_props
Attributes inherited from TemporalPosition
#events, #frame, #indeterminated_position, #options, #precision, #query, #trans
Attributes included from Parts::Resource
#_pool, #child, #keys, #locale, #namespace
Instance Method Summary collapse
-
#&(other) ⇒ When::TM::DateAndTime
ユリウス日または通年が指定の剰余となる日.
-
#_attr ⇒ Object
属性の Hash.
-
#_copy(options = {}) ⇒ Object
属性のコピー.
-
#ceil(digit = DAY, precision = digit) ⇒ When::TM::DateAndTime
下位桁の切り上げ.
-
#clock ⇒ When::TM::Clock
時法の取得.
-
#floor(digit = DAY, precision = digit) ⇒ When::TM::DateAndTime
下位桁の切り捨て.
-
#hour(d = 0) ⇒ Numeric
時.
-
#initialize(date, time, options = {}) ⇒ DateAndTime
constructor
オブジェクトの生成.
-
#local_time ⇒ Numeric
内部時間(ローカル).
-
#location ⇒ When::Coordinates::Spatial
位置情報.
-
#minute(d = 0) ⇒ Numeric
(also: #min)
分.
-
#name(index, format = nil) ⇒ When::BasicTypes::M17n
要素の多言語対応文字列化.
-
#second(d = 0) ⇒ Numeric
(also: #sec)
秒.
-
#to_cal_date ⇒ When::TM::CalDate
(also: #to_CalDate)
時刻情報のない When::TM::CalDate を返す.
-
#to_m17n(precision = @precision, round = false) ⇒ When::BasicTypes::M17n
多言語対応文字列化 - When.exe Standard Representation により多言語対応文字列化する.
-
#to_s(precision = @precision, round = false) ⇒ String
文字列化 -When.exe Standard Representation により文字列化する.
-
#universal_time ⇒ Numeric
内部時間.
-
#value(index) ⇒ Numeric
要素の参照.
Methods inherited from CalDate
#%, #_event_form, #_to_h, #calendar_era_epoch, #calendar_era_go_back, #calendar_era_name, #calendar_era_reverse, #calendar_name, #coordinate, #cwday, #cweek, #cwyear, #day, #leaf?, #least_significant_coordinate, #length, #mday, #member, #month, #most_significant_coordinate, #mweek, #rdf_graph, #reference_label, #register_graph, #to_i, #to_jsonld_hash, #to_linked_data, #to_residue, #to_uri_linkeddata, #wday, #without_era, #yday, #year, #ymon, #yweek
Methods inherited from TemporalPosition
#+, #+@, #-, #<=>, #==, #[], #^, _instance, #_notes, _options, _setup_, _setup_info, _temporal_position, #_to_h, #_to_s, _verify, #calendar_name, #clock_name, #copy, #dynamical_time, format, #has_next?, #has_time?, #include?, #inspect, #is?, #month_included, #note?, #notes, #period, #prev, #rate_of_clock, #reference_label, #scan, #strftime, #succ, #time_standard, #to_clock_time, #to_date, #to_datetime, #to_f, #to_i, #to_residue, #to_time, #to_uri, #to_uri_escape, #week_included, #year_included
Methods included from Coordinates
Methods included from When
Border, Calendar, CalendarEra, CalendarNote, Clock, Duration, Index, Location, M17n, MonthName, Pair, Residue, Resource, TemporalPosition, Wikipedia, _const_missing, _define_common_calendar_types, _setup_, _setup_info, at, client, column, config, const_missing, era, free_conv, m17n, now, server, today, when?
Methods included from TemporalPosition::Conversion
Methods included from Parts::Resource
#[], #^, _abbreviation_to_iri, _decode, _encode, _extract_prefix, _instance, _instantiate, _parse, _path_with_prefix, _replace_tags, _setup_, _setup_info, _simplify_path, base_uri, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?, root_dir
Methods included from Parts::Resource::Pool
#[], #[]=, #_pool, #_setup_, #pool_keys
Methods included from Parts::Resource::Synchronize
Constructor Details
#initialize(date, time, options = {}) ⇒ DateAndTime
オブジェクトの生成
2241 2242 2243 2244 |
# File 'lib/when_exe/tmposition.rb', line 2241 def initialize(date, time, ={}) [:time] = time super(date, ) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class When::TM::TemporalPosition
Instance Attribute Details
#clk_time ⇒ When::TM::ClockTime (readonly) Also known as: clkTime
時刻要素
2034 2035 2036 |
# File 'lib/when_exe/tmposition.rb', line 2034 def clk_time @clk_time end |
Instance Method Details
#&(other) ⇒ When::TM::DateAndTime
ユリウス日または通年が指定の剰余となる日
2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 |
# File 'lib/when_exe/tmposition.rb', line 2090 def &(other) raise TypeError,"The right operand should be When::Coordinates::Residue" unless other.kind_of?(Residue) case other.event when 'day' # 指定の剰余となる日 sdn = other & to_i = {:date=>_date_with_era(@frame.to_cal_date(sdn)), :time=>@clk_time.clk_time.dup, :events=>nil, :query=>@query, :validate=>:done} [:precision] = When::DAY if precision < When::DAY result = self.dup._copy() result.send(:_force_euqal_day, sdn-result.to_i) when 'year' # 指定の剰余となる年 date = @frame.send(:_decode, _date_without_era) date[0] = (other & (date[0] + @frame.diff_to_CE)) - @frame.diff_to_CE = {:date=>_date_with_era(@frame.send(:_encode, date)), :time=>@clk_time.clk_time.dup, :events=>nil, :query=>@query} [:precision] = When::YEAR if precision < When::YEAR return self.dup._copy() else raise ArgumentError,"The right operand should have a unit 'day' or 'year'" end end |
#_attr ⇒ Object
属性の Hash
2200 2201 2202 |
# File 'lib/when_exe/tmposition.rb', line 2200 def _attr super.merge({:clock=>clock}) end |
#_copy(options = {}) ⇒ Object
属性のコピー
2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 |
# File 'lib/when_exe/tmposition.rb', line 2206 def _copy(={}) # 夏時間の調整 case [:time] when Array if clock._need_validate if @calendar_era_props date = [:date].dup date[0] += calendar_era_epoch else date = [:date] end new_clock = clock._daylight([@frame, date, [:time]]) [:time] = [:time].map {|t| t * 1} else new_clock = clock end [:time] = @clk_time.dup._copy(.merge({:clock=>new_clock})) when nil [:time] = @clk_time.dup._copy() end return super() end |
#ceil(digit = DAY, precision = digit) ⇒ When::TM::DateAndTime
下位桁の切り上げ
2163 2164 2165 2166 2167 2168 2169 2170 |
# File 'lib/when_exe/tmposition.rb', line 2163 def ceil(digit=DAY, precision=digit) length = clock.indices.length count = digit - length period = PeriodDuration.new((count<=0) ? 1 : 0.1**count, digit, (-@frame.indices.length)..length) result = floor(digit, precision) + period result += clock.tz_difference if (result.universal_time <= self.universal_time) return result end |
#clock ⇒ When::TM::Clock
時法の取得
2041 2042 2043 |
# File 'lib/when_exe/tmposition.rb', line 2041 def clock @clk_time.frame end |
#floor(digit = DAY, precision = digit) ⇒ When::TM::DateAndTime
下位桁の切り捨て
2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 |
# File 'lib/when_exe/tmposition.rb', line 2124 def floor(digit=DAY, precision=digit) count = digit - clock.indices.length if digit>=DAY date = @cal_date.dup elsif @calendar_era_props date = @cal_date.dup date[0] += calendar_era_epoch date = @frame._validate(date[0..(digit-1)]) date[0] -= calendar_era_epoch else date = @frame._validate(@cal_date[0..(digit-1)]) end time = @clk_time.clk_time[0..((digit<=DAY) ? 0 : ((count>=0) ? -1 : digit))] time[0] += to_i time = clock._validate(time) time[0] -= to_i if (count >= 0) factor = 10**count time[-1] = (time[-1] * factor).floor.to_f / factor end # オブジェクトの生成 = {:date=>date, :validate=>:done, :events=>nil, :query=>nil, :time=>(digit<=DAY) ? time : @clk_time.dup._copy({:time=>time})} [:precision] = precision if precision return self.dup._copy() end |
#hour(d = 0) ⇒ Numeric
時
1475 1476 1477 |
# File 'lib/when_exe/inspect.rb', line 1475 def hour(d=0) @clk_time.hour(d) end |
#local_time ⇒ Numeric
内部時間(ローカル)
2067 2068 2069 2070 2071 |
# File 'lib/when_exe/tmposition.rb', line 2067 def local_time return super if [Now, Max, Min].include?(@indeterminated_position) raise NameError, "Temporal Reference System is not defined" unless (@frame && clock) @local_time ||= (to_i - JulianDate::JD19700101) * Duration::DAY + @clk_time.local_time(to_i) end |
#location ⇒ When::Coordinates::Spatial
位置情報
2176 2177 2178 |
# File 'lib/when_exe/tmposition.rb', line 2176 def location @location ||= @clk_time.frame.location end |
#minute(d = 0) ⇒ Numeric Also known as: min
分
1485 1486 1487 |
# File 'lib/when_exe/inspect.rb', line 1485 def minute(d=0) @clk_time.minute(d) end |
#name(index, format = nil) ⇒ When::BasicTypes::M17n
要素の多言語対応文字列化
1431 1432 1433 1434 |
# File 'lib/when_exe/inspect.rb', line 1431 def name(index, format=nil) digit = _digit(index) (digit <= DAY) ? super : @clk_time.name(digit, format) end |
#second(d = 0) ⇒ Numeric Also known as: sec
秒
1496 1497 1498 |
# File 'lib/when_exe/inspect.rb', line 1496 def second(d=0) @clk_time.second(d) end |
#to_cal_date ⇒ When::TM::CalDate Also known as: to_CalDate
時刻情報のない When::TM::CalDate を返す
2184 2185 2186 2187 2188 2189 |
# File 'lib/when_exe/tmposition.rb', line 2184 def to_cal_date = _attr .delete(:clock) [:precision] = [When::DAY, [:precision]].min CalDate.new(@cal_date, ) end |
#to_m17n(precision = @precision, round = false) ⇒ When::BasicTypes::M17n
丸めるのは precision が When::DAY よりも高精度の場合のみである
多言語対応文字列化 - When.exe Standard Representation により多言語対応文字列化する
1444 1445 1446 |
# File 'lib/when_exe/inspect.rb', line 1444 def to_m17n(precision=@precision, round=false) super + _clk_time_for_inspect(round ? precision : nil).to_m17n(precision) end |
#to_s(precision = @precision, round = false) ⇒ String
丸めるのは precision が When::DAY よりも高精度の場合のみである
文字列化 -When.exe Standard Representation により文字列化する
1456 1457 1458 |
# File 'lib/when_exe/inspect.rb', line 1456 def to_s(precision=@precision, round=false) super + _clk_time_for_inspect(round ? precision : nil).to_s(precision) end |
#universal_time ⇒ Numeric
内部時間
2053 2054 2055 2056 2057 |
# File 'lib/when_exe/tmposition.rb', line 2053 def universal_time return super if [Now, Max, Min].include?(@indeterminated_position) raise NameError, "Temporal Reference System is not defined" unless (@frame && clock) @universal_time ||= (to_i - JulianDate::JD19700101) * Duration::DAY + @clk_time.universal_time(to_i) end |