class Time - syck-1.0.5 Documentation

# class Time

### Public Class Methods

yaml_new( klass, tag, val ) click to toggle source

    # File lib/syck/rubytypes.rb, line 306
    def Time.yaml_new( klass, tag, val )
        if Hash === val
            t = val.delete( 'at' )
            val.each { |k,v| t.instance_variable_set( k, v ) }
            t
        else
            raise Syck::TypeError, "Invalid Time: " + val.inspect
        end
    end

### Public Instance Methods

to_yaml( opts = {} ) click to toggle source

    # File lib/syck/rubytypes.rb, line 315
    def to_yaml( opts = {} )
            Syck::quick_emit( self, opts ) do |out|
        tz = "Z"
        # from the tidy Tobias Peters <t-peters@gmx.de> Thanks!
        unless self.utc?
            utc_same_instant = self.dup.utc
            utc_same_writing = Time.utc(year,month,day,hour,min,sec,usec)
            difference_to_utc = utc_same_writing - utc_same_instant
            if (difference_to_utc < 0)
                difference_sign = '-'
                absolute_difference = -difference_to_utc
            else
                difference_sign = '+'
                absolute_difference = difference_to_utc
            end
            difference_minutes = (absolute_difference/60).round
            tz = "%s%02d:%02d" % [ difference_sign, difference_minutes / 60, difference_minutes % 60]
        end
        standard = self.strftime( "%Y-%m-%d %H:%M:%S" )
        standard += ".%06d" % [usec] if usec.nonzero?
        standard += " %s" % [tz]
        if to_yaml_properties.empty?
            out.scalar( taguri, standard, :plain )
        else
            out.map( taguri, to_yaml_style ) do |map|
                map.add( 'at', standard )
                to_yaml_properties.each do |m|
                    map.add( m, instance_variable_get( m ) )
                end
            end
        end
    end
    end