Class | XSD::XSDTime |
In: |
lib/xsd/datatypes.rb
|
Parent: | XSDAnySimpleType |
Type | = | QName.new(Namespace, TimeLiteral) |
# File lib/xsd/datatypes.rb, line 654 654: def initialize(value = nil) 655: init(Type, value) 656: end
# File lib/xsd/datatypes.rb, line 678 678: def _set(data) 679: if data.nil? 680: @data = @secfrac = nil 681: return 682: end 683: @data, @secfrac = data 684: end
# File lib/xsd/datatypes.rb, line 686 686: def _to_s 687: s = format('%02d:%02d:%02d', @data.hour, @data.min, @data.sec) 688: if @data.sec_fraction.nonzero? 689: if @secfrac 690: s << ".#{ @secfrac }" 691: else 692: s << sprintf("%.16f", 693: (@data.sec_fraction * SecInDay).to_f).sub(/^0/, '').sub(/0*$/, '') 694: end 695: end 696: add_tz(s) 697: end
# File lib/xsd/datatypes.rb, line 660 660: def screen_data_str(t) 661: /^(\d\d):(\d\d):(\d\d(?:\.(\d*))?)(Z|(?:([+\-])(\d\d):(\d\d))?)?$/ =~ t.to_s.strip 662: unless Regexp.last_match 663: raise ValueSpaceError.new("#{ type }: cannot accept '#{ t }'.") 664: end 665: hour = $1.to_i 666: min = $2.to_i 667: sec = $3.to_i 668: secfrac = $4 669: zonestr = $5 670: data = DateTime.civil(1, 1, 1, hour, min, sec, tz2of(zonestr)) 671: if secfrac 672: diffday = secfrac.to_i.to_r / (10 ** secfrac.size) / SecInDay 673: data += diffday 674: end 675: [data, secfrac] 676: end