My timezone is IST, +0530. It shows the correct zone if I pass arguments with recent years:
Time.new('2000', '02', '29') # => 2000-02-29 00:00:00 +0530
But the zone changes for years like these:
Time.new('1000', '01', '29') # => 1000-01-29 00:00:00 +0553
Time.new('1943') # => 1943-01-01 00:00:00 +0630
Time.new('1871') # => 1871-01-01 00:00:00 +0521
To find out the previous dates, I created a loop:
puts 2_200.times.map { |i| Time.new(i.to_s) }
As I can see for the years in the future, the zone is +0530, but for past centuries, the zone is sometime differs!
Why does the zone differ in the same system?