Class Index [+]

Quicksearch

When::TM::CalDate

暦日

see gml schema

Attributes

cal_date[R]

日付要素

  type : [Numeric]
calendar_era_name[RW]

暦年代名

  type : String or [String, Integer]

    Integer は, 使用する When::TM::Calendar で暦元に対応する年
calendar_era[RW]

暦年代

  type : When::TM::CalendarEra

Public Class Methods

new(date, options={}) click to toggle source

オブジェクトの生成

  date : [Numeric]
    日付表現

  options        : Hash
    :frame     => When::TM::Calendar
    :era_name  => When::TM::CalendarEra, When::BasicTypes::M17n or [When::BasicTypes::M17n, Integer]
       Integer は 当該年号の 0 年に相当する通年
    :precision => Integer (Enumerated in the When::Coordinates Module)
    the others => see When::TM::TemporalPosition._instance
      # File when/tmposition.rb, line 1391
1391:     def initialize(date, options={})
1392:       # Frame
1393:       @frame = When.IRI(options[:frame] || @frame || 'Gregorian', '_c:')
1394: 
1395:       # 年号 & 日付
1396:       @calendar_era_name = options[:era_name]
1397:       @calendar_era      = options[:era]
1398:       @cal_date          = date
1399: 
1400:       super(options)
1401:     end

Public Instance Methods

%(other) click to toggle source

ユリウス日または通年の剰余

  other   : When::Coordinates::Residue

  returns : Numeric
      # File when/tmposition.rb, line 1283
1283:     def %(other)
1284:       raise TypeError,"The right operand should be When::Coordinates::Residue" unless Residue === other
1285:       case other.unit
1286:       when 'DAY'  ; other % to_i
1287:       when 'YEAR' ; other % cal_date[0]
1288:       else        ; raise ArgumentError,"The right operand should have a unit 'D' or 'Y'"
1289:       end
1290:     end
&(other) click to toggle source

ユリウス日または通年が指定の剰余となる日

  other   : When::Coordinates::Residue

  returns : When::TM::CalDate
      # File when/tmposition.rb, line 1259
1259:     def &(other)
1260:       raise TypeError,"The right operand should be When::Coordinates::Residue" unless Residue === other
1261:       case other.unit
1262:       when 'DAY'
1263:       # 指定の剰余となる日
1264:         return self.dup._copy({:events=>nil, :query=>@query, :validate=>:done, :date=>@frame.to_cal_date(other & to_i)})
1265: 
1266:       when 'YEAR'
1267:       # 指定の剰余となる年
1268:         date = @cal_date.dup
1269:         date[0] = other & date[0]
1270:         return self.dup._copy({:date=>date, :events=>nil, :query=>@query})
1271: 
1272:       else
1273:         raise ArgumentError,"The right operand should have a unit 'D' or 'Y'"
1274:       end
1275:     end
ceil(digit=DAY, precision=digit) click to toggle source

下位桁の切り上げ

  digit     : Integer
    切り上げずに残す、最下位の桁

  precision : Integer (Enumerated in the When::Coordinates Module)
    切り上げ結果の分解能(デフォルトは切り上げずに残した最下位の桁)

  returns   : When::TM::CalDate
      # File when/tmposition.rb, line 1318
1318:     def ceil(digit=DAY, precision=digit)
1319:       (self + PeriodDuration.new(1, digit, (-@frame.indices.length)..0)).floor(digit, precision)
1320:     end
clock() click to toggle source

時法の取得 - ダミー

      # File when/tmposition.rb, line 1182
1182:     def clock
1183:       nil
1184:     end
floor(digit=DAY, precision=digit) click to toggle source

下位桁の切り捨て

  digit     : Integer
    切り捨てずに残す、最下位の桁

  precision : Integer (Enumerated in the When::Coordinates Module)
    切り捨て結果の分解能(デフォルトは切り捨てずに残した最下位の桁)

  returns   : When::TM::CalDate
      # File when/tmposition.rb, line 1302
1302:     def floor(digit=DAY, precision=digit)
1303:       options = {:date=>@cal_date[0..(digit-1)], :events=>nil, :query=>nil}
1304:       options[:precision] = precision if precision
1305:       self.dup._copy(options)
1306:     end
leaf?() click to toggle source

暦年代が末端の参照であるか?

      # File when/tmposition.rb, line 1323
1323:     def leaf?
1324:       name, = @calendar_era_name
1325:       return true unless name.respond_to?(:_pool)
1326:       era  = name._pool['..']
1327:       return true unless era.respond_to?(:leaf?)
1328:       return era.leaf?
1329:     end
name(index, format=nil) click to toggle source

要素の多言語対応文字列化

  index   : Integer or String of When::Coordinates::PRECISION
    多言語対応文字列化する要素の指定

  format  : When::BasicTypes::M17n
    多言語対応文字列化の書式

  returns : When::BasicTypes::M17n
      # File when/tmposition.rb, line 1236
1236:     def name(index, format=nil)
1237:       digit      = _digit(index) {|digit| digit <= DAY}
1238:       coordinate = @cal_date[digit-1]
1239:       return m17n(format % coordinate) if format
1240: 
1241:       indices = @frame.indices[digit-1]
1242:       if indices
1243:         trunk  = indices.trunk
1244:         branch = indices.branch
1245:       end
1246:       format = branch ? "%02d-" : "%02d"
1247:       return m17n(format % coordinate) unless trunk
1248:       trunk  = trunk[coordinate * 1]
1249:       return m17n(trunk) unless branch
1250:       return trunk.prefix(branch[coordinate * 0])
1251:     end
to_i() click to toggle source

ユリウス日

  returns : Integer

  -4712-01-01T12:00:00Z からの経過日数に対応する通番(日の境界で1進める)
      # File when/tmposition.rb, line 1203
1203:     def to_i
1204:       return @sdn if @sdn
1205:       name, base = @calendar_era_name
1206:       if base
1207:         date     = @cal_date.dup
1208:         date[0] += base 
1209:       else
1210:         date     = @cal_date
1211:       end
1212:       @sdn = @frame.to_julian_date(date)
1213:     end
to_m17n(precision=@precision) click to toggle source

多言語対応文字列化

  precision : Integer (Enumerated in the When::Coordinates Module)
    どの桁まで多言語対応文字列化するか、分解能で指定する(デフォルト : @precision)

  returns   : When::BasicTypes::M17n

  When Standard Representation により多言語対応文字列化する
      # File when/tmposition.rb, line 1340
1340:     def to_m17n(precision=@precision)
1341:       era, = @calendar_era_name
1342:       date = _date_to_s(precision)
1343:       return m17n(date) unless era
1344:       return m17n(era) + date
1345:     end
to_s(precision=@precision) click to toggle source

文字列化

  precision : Integer (Enumerated in the When::Coordinates Module)
    どの桁まで多言語対応文字列化するか、分解能で指定する(デフォルト : @precision)

  returns   : String

  When Standard Representation により文字列化する
      # File when/tmposition.rb, line 1356
1356:     def to_s(precision=@precision)
1357:       era, = @calendar_era_name
1358:       date = _date_to_s(precision)
1359:       return date unless era
1360:       return era.to_s + date
1361:     end
universal_time() click to toggle source

内部時間

  returns : Numeric

  当日正午の 1970-01-01T00:00:00Z からの Universal Coordinated Time の経過時間 / 128秒
      # File when/tmposition.rb, line 1192
1192:     def universal_time
1193:       return super if [Now, Max, Min].include?(@indeterminated_position)
1194:       @universal_time ||= (to_i - JulianDate::JD19700101 + 0.5) * IntervalLength::DAY
1195:     end
value(index) click to toggle source

要素の参照

  index   : Integer or String of When::Coordinates::PRECISION
    参照する要素の指定

  returns : Numeric
      # File when/tmposition.rb, line 1222
1222:     def value(index)
1223:       @cal_date[(_digit(index) {|digit| digit <= DAY})-1]
1224:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.