Class: When::TM::ClockTime
- Inherits:
-
TemporalPosition
- Object
- TemporalPosition
- When::TM::ClockTime
- Defined in:
- lib/when_exe/tmposition.rb,
lib/when_exe/inspect.rb
Overview
時刻
see gml schema
Constant Summary
Constants inherited from TemporalPosition
TemporalPosition::AMPM, TemporalPosition::Format, TemporalPosition::HashProperty
Constants included from Coordinates
Coordinates::Bahai, Coordinates::CommonResidue, Coordinates::DefaultDateIndices, Coordinates::DefaultDayIndex, Coordinates::DefaultTimeIndices, Coordinates::IndianCities, Coordinates::Javanese, Coordinates::MATCH, Coordinates::Mayan, Coordinates::PERIOD, Coordinates::PERIOD_NAME, Coordinates::PRECISION, Coordinates::PRECISION_NAME, Coordinates::Tibetan, Coordinates::VALUE, Coordinates::Yi
Constants included from When
CENTURY, DAY, DECADE, DurationP1D, DurationP1M, DurationP1W, DurationP1Y, EUCJP, HOUR, MINUTE, MONTH, MinusInfinity, PlusInfinity, SECOND, STRING, SYSTEM, SourceURI, When::TimeValue, UTF8, VERSION, W31J, WEEK, YEAR
Constants included from Parts::Resource
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 ⇒ Array<Numeric>
(also: #clkTime)
readonly
時刻要素.
Attributes inherited from TemporalPosition
#events, #frame, #indeterminated_position, #location, #options, #precision, #query, #trans
Attributes included from Parts::Resource
#_pool, #child, #keys, #locale, #namespace
Instance Method Summary collapse
-
#_copy(options = {}) ⇒ Object
protected 属性のコピー.
-
#_time_to_s(precision = @precision) ⇒ String
protected.
-
#_to_hash_value(options = {}) ⇒ Object
to_h のための要素生成.
-
#carry ⇒ Numeric
繰り上がり.
-
#hour(d = 0) ⇒ Numeric
時.
-
#initialize(time, options = {}) ⇒ ClockTime
constructor
オブジェクトの生成.
-
#minute(d = 0) ⇒ Numeric
(also: #min)
分.
-
#name(index, format = nil) ⇒ When::BasicTypes::M17n
要素の多言語対応文字列化.
-
#second(d = 0) ⇒ Numeric
(also: #sec)
秒.
-
#to_m17n(precision = @precision) ⇒ When::BasicTypes::M17n
多言語対応文字列化 - When.exe Standard Representation により多言語対応文字列化する.
-
#to_s(precision = @precision) ⇒ String
文字列化 - When.exe Standard Representation により文字列化する.
-
#universal_time ⇒ Numeric
内部時間.
-
#value(index) ⇒ Numeric
要素の参照.
Methods inherited from TemporalPosition
#+, #+@, #-, #<=>, #==, #[], #^, #_attr, _instance, #_notes, _options, _setup_, #_to_h, #_to_s, _verify, #calendar_name, #clock_name, #copy, #dynamical_time, #floor, #has_next?, #has_time?, #include?, #is?, #month_included, #note?, #notes, #period, #prev, #rate_of_clock, #reference_label, #scan, #strftime, #succ, #term, #time_standard, #to_clock_time, #to_date, #to_date_time, #to_date_uri, #to_f, #to_i, #to_residue, #to_time, #to_uri, #week_included, #year_included
Methods included from Coordinates
Methods included from When
Calendar, CalendarEra, CalendarNote, Clock, Duration, M17n, MonthName, Pair, Residue, Resource, TemporalPosition, _setup_, at, client, config, era, free_conv, m17n, now, server, today, utc, when?
Methods included from TemporalPosition::Conversion
Methods included from Parts::Resource
#[], #^, _decode, _encode, _extract_prefix, _instance, _parse, _path_with_prefix, _replace_tags, _setup_, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?
Methods included from Parts::Resource::Pool
#[], #[]=, #_pool, #_setup_, #pool_keys
Methods included from Parts::Resource::Synchronize
Constructor Details
#initialize(time, options = {}) ⇒ ClockTime
オブジェクトの生成
1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 |
# File 'lib/when_exe/tmposition.rb', line 1361 def initialize(time, ={}) # 参照系の取得 @frame = [:frame] || Clock.local_time @frame = When.Clock(@frame) if (@frame.kind_of?(String)) .delete(:frame) # 時刻表現の解読 ( Time Zone の解釈 ) if (time.kind_of?(String)) case time when /^([-+])?(\d{2,}?):?(\d{2})?:?(\d{2}(\.\d+)?)?$/ sign, hh, mm, ss = $~[1..4] time = @frame._validate([0,0,0,0], [0, -(sign.to_s + "0" + hh.to_s).to_i, -(sign.to_s + "0" + mm.to_s).to_i, Pair._en_number(-(sign.to_s + "0" + ss.to_s).to_f)]) time[0] = Pair.new(0, time[0].to_i) if (time[0] != 0) when /^Z$/ time = [0,0,0,0] else raise ArgumentError, "Invalid Time Format" end end @clk_time = time # 分解能 @precision = @frame._precision(time, .delete(:precision)) super() end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class When::TM::TemporalPosition
Instance Attribute Details
Instance Method Details
#_copy(options = {}) ⇒ Object
protected 属性のコピー
1341 1342 1343 1344 1345 1346 1347 1348 1349 |
# File 'lib/when_exe/tmposition.rb', line 1341 def _copy(={}) @clk_time = [:time] if (.key?(:time)) @frame = [:clock] if (.key?(:clock)) if (.key?(:tz_prop)) @frame = @frame.dup @frame.tz_prop = [:tz_prop] end return super end |
#_time_to_s(precision = @precision) ⇒ String
protected
時間帯以外の部分の文字列化
844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 |
# File 'lib/when_exe/inspect.rb', line 844 def _time_to_s(precision=@precision) terms = [] format = '' format += Pair::DL2[@clk_time[0] * 0] || ':' if @frame.pair[0] || @clk_time[0].kind_of?(Pair) # 時分 digits = [@clk_time.length-2, precision].min if digits > 0 terms += @clk_time[1..-1] format += "%02d:" * digits format = format[0..-2] if precision == digits end # 秒 digits = [precision - @clk_time.length + 1, STRING-SECOND].min if digits == 0 format += "%02d" elsif digits > 0 factor = 10**digits terms[-1] = ((@clk_time[-1] + 1E-6) * factor).floor.to_f / factor # 切り捨て(10で割る丸めガードあり) format += "%02.#{digits}f" end # 結果 time = Pair._format([format] + terms) time.sub(/([^\d])(\d)\./, '\10\2.') end |
#_to_hash_value(options = {}) ⇒ Object
to_h のための要素生成
875 876 877 |
# File 'lib/when_exe/inspect.rb', line 875 def _to_hash_value(={}) clk_time.map {|e| _m17n_form(e, ) } end |
#carry ⇒ Numeric
繰り上がり
1324 1325 1326 |
# File 'lib/when_exe/tmposition.rb', line 1324 def carry return @clk_time[0] end |
#hour(d = 0) ⇒ Numeric
時
807 808 809 |
# File 'lib/when_exe/inspect.rb', line 807 def hour(d=0) @clk_time[HOUR+d] end |
#minute(d = 0) ⇒ Numeric Also known as: min
分
818 819 820 |
# File 'lib/when_exe/inspect.rb', line 818 def minute(d=0) @clk_time[MINUTE+d] end |
#name(index, format = nil) ⇒ When::BasicTypes::M17n
要素の多言語対応文字列化
756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 |
# File 'lib/when_exe/inspect.rb', line 756 def name(index, format=nil) digit = _digit(index) {|digit| digit > DAY} coordinate = @clk_time[digit] return m17n(format % coordinate) if format indices = @frame.indices[digit-1] if indices trunk = indices.trunk branch = indices.branch end format = branch ? m17n("%02d:") : "%02d" return m17n(format % coordinate) unless trunk trunk = trunk[coordinate * 1] return m17n(trunk) unless branch return trunk.prefix(branch[coordinate * 0]) end |
#second(d = 0) ⇒ Numeric Also known as: sec
秒
830 831 832 |
# File 'lib/when_exe/inspect.rb', line 830 def second(d=0) @clk_time[SECOND+d] end |
#to_m17n(precision = @precision) ⇒ When::BasicTypes::M17n
多言語対応文字列化 - When.exe Standard Representation により多言語対応文字列化する
779 780 781 782 783 784 785 |
# File 'lib/when_exe/inspect.rb', line 779 def to_m17n(precision=@precision) time = m17n('T' + _time_to_s(precision)) if @frame time += @frame.zone unless Clock.is_local_time_set? && @frame.equal?(Clock.local_time) end return time end |
#to_s(precision = @precision) ⇒ String
文字列化 - When.exe Standard Representation により文字列化する
793 794 795 796 797 798 799 |
# File 'lib/when_exe/inspect.rb', line 793 def to_s(precision=@precision) time = 'T' + _time_to_s(precision) if @frame time += @frame.zone unless Clock.is_local_time_set? && @frame.equal?(Clock.local_time) end return time end |
#universal_time ⇒ Numeric
内部時間
1313 1314 1315 1316 |
# File 'lib/when_exe/tmposition.rb', line 1313 def universal_time raise NameError, "Temporal Reference System is not defined" unless @frame @universal_time ||= @frame.to_universal_time(@clk_time) end |