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::DateTimeInstanceMethods, TemporalPosition::Format, TemporalPosition::HashProperty
Constants included from Coordinates
Coordinates::Bahai, 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::Tibetan, Coordinates::VALUE, Coordinates::Yi
Constants included from When
CENTURY, 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
Constants included from Parts::Resource
Parts::Resource::ConstList, Parts::Resource::ConstTypes, 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 ⇒ 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
オブジェクトの生成.
-
#local_time(sdn = nil) ⇒ Numeric
内部時間(ローカル).
-
#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(sdn = nil) ⇒ Numeric
内部時間.
-
#value(index) ⇒ Numeric
要素の参照.
Methods inherited from TemporalPosition
#+, #+@, #-, #<=>, #==, #[], #^, #_attr, _instance, #_notes, _options, _setup_, _setup_info, _temporal_position, #_term, #_to_h, #_to_s, _verify, #calendar_name, #caret_frame, #clock_name, #copy, #dynamical_time, #floor, 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, #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(time, options = {}) ⇒ ClockTime
オブジェクトの生成
1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 |
# File 'lib/when_exe/tmposition.rb', line 1533 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 /\A([-+])?(\d{2,}?):?(\d{2})?:?(\d{2}(\.\d+)?)?\z/ 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 /\AZ\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 属性のコピー
1513 1514 1515 1516 1517 1518 1519 1520 1521 |
# File 'lib/when_exe/tmposition.rb', line 1513 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
時間帯以外の部分の文字列化
950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 |
# File 'lib/when_exe/inspect.rb', line 950 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 のための要素生成
981 982 983 |
# File 'lib/when_exe/inspect.rb', line 981 def _to_hash_value(={}) clk_time.map {|e| _m17n_form(e, ) } end |
#carry ⇒ Numeric
繰り上がり
1496 1497 1498 |
# File 'lib/when_exe/tmposition.rb', line 1496 def carry return @clk_time[0] end |
#hour(d = 0) ⇒ Numeric
時
913 914 915 |
# File 'lib/when_exe/inspect.rb', line 913 def hour(d=0) @clk_time[HOUR+d] end |
#local_time(sdn = nil) ⇒ Numeric
内部時間(ローカル)
1485 1486 1487 1488 |
# File 'lib/when_exe/tmposition.rb', line 1485 def local_time(sdn=nil) raise NameError, "Temporal Reference System is not defined" unless @frame @local_time ||= @frame.to_local_time(@clk_time, sdn) end |
#minute(d = 0) ⇒ Numeric Also known as: min
分
924 925 926 |
# File 'lib/when_exe/inspect.rb', line 924 def minute(d=0) @clk_time[MINUTE+d] end |
#name(index, format = nil) ⇒ When::BasicTypes::M17n
要素の多言語対応文字列化
862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 |
# File 'lib/when_exe/inspect.rb', line 862 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
秒
936 937 938 |
# File 'lib/when_exe/inspect.rb', line 936 def second(d=0) @clk_time[SECOND+d] end |
#to_m17n(precision = @precision) ⇒ When::BasicTypes::M17n
多言語対応文字列化 - When.exe Standard Representation により多言語対応文字列化する
885 886 887 888 889 890 891 |
# File 'lib/when_exe/inspect.rb', line 885 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 により文字列化する
899 900 901 902 903 904 905 |
# File 'lib/when_exe/inspect.rb', line 899 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(sdn = nil) ⇒ Numeric
内部時間
1470 1471 1472 1473 |
# File 'lib/when_exe/tmposition.rb', line 1470 def universal_time(sdn=nil) raise NameError, "Temporal Reference System is not defined" unless @frame @universal_time ||= @frame.to_universal_time(@clk_time, sdn) end |