mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Fixed yday and wday with timezone [Bug #17024]
This commit is contained in:
		
							parent
							
								
									90935ff294
								
							
						
					
					
						commit
						99a9c3fe2e
					
				
				
				Notes:
				
					git
				
				2020-07-12 23:31:18 +09:00 
				
			
			
			
		
		
					 3 changed files with 15 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -129,6 +129,10 @@ ruby_version_is "2.6" do
 | 
			
		|||
 | 
			
		||||
      time.zone.should == zone
 | 
			
		||||
      time.utc_offset.should == 5*3600+30*60
 | 
			
		||||
      ruby_version_is "2.8" do
 | 
			
		||||
        time.wday.should == 6
 | 
			
		||||
        time.yday.should == 1
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "accepts timezone argument that must have #local_to_utc and #utc_to_local methods" do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -604,6 +604,8 @@ module TestTimeTZ::WithTZ
 | 
			
		|||
    assert_equal([2018, 9, 1, 12, 0, 0, tz], [t.year, t.mon, t.mday, t.hour, t.min, t.sec, t.zone])
 | 
			
		||||
    h, m = (-utc_offset / 60).divmod(60)
 | 
			
		||||
    assert_equal(time_class.utc(2018, 9, 1, 12+h, m, 0).to_i, t.to_i)
 | 
			
		||||
    assert_equal(6, t.wday)
 | 
			
		||||
    assert_equal(244, t.yday)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def subtest_now(time_class, tz, tzarg, tzname, abbr, utc_offset)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								time.c
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								time.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -4580,14 +4580,15 @@ time_wday(VALUE time)
 | 
			
		|||
 | 
			
		||||
    GetTimeval(time, tobj);
 | 
			
		||||
    MAKE_TM(time, tobj);
 | 
			
		||||
    if (tobj->vtm.wday == VTM_WDAY_INITVAL) {
 | 
			
		||||
        VALUE zone = tobj->vtm.zone;
 | 
			
		||||
        if (!NIL_P(zone)) zone_localtime(zone, time);
 | 
			
		||||
    }
 | 
			
		||||
    return INT2FIX((int)tobj->vtm.wday);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define wday_p(n) {\
 | 
			
		||||
    struct time_object *tobj;\
 | 
			
		||||
    GetTimeval(time, tobj);\
 | 
			
		||||
    MAKE_TM(time, tobj);\
 | 
			
		||||
    return (tobj->vtm.wday == (n)) ? Qtrue : Qfalse;\
 | 
			
		||||
    return (time_wday(time) == INT2FIX(n)) ? Qtrue : Qfalse; \
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -4719,6 +4720,10 @@ time_yday(VALUE time)
 | 
			
		|||
 | 
			
		||||
    GetTimeval(time, tobj);
 | 
			
		||||
    MAKE_TM(time, tobj);
 | 
			
		||||
    if (tobj->vtm.yday == 0) {
 | 
			
		||||
        VALUE zone = tobj->vtm.zone;
 | 
			
		||||
        if (!NIL_P(zone)) zone_localtime(zone, time);
 | 
			
		||||
    }
 | 
			
		||||
    return INT2FIX(tobj->vtm.yday);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue