title: Behaviour of GregorianCalendar.set() with daylight saving times
body: <p>While troubleshooting a glitch, something strange in this method behavior appears.</p>
  <hr />
  <h2>Context</h2>
  <p>Some countries use to save some daylight by shifting time. For example, in the timezone &quot;Europe/Paris&quot;, each year, time shifts 1 hour forwards end March and 1 hour backwards end October, both between 2 AM and 3 AM. This causes, for example, the date October, the 30th 2016 at 02:15 AM to exist twice.</p>
  <p>Fortunately, both dates does not have the same timestamp (ms) amount, neither readable representation :</p>
  <ul>
  <li>Before time shift : Sun Oct 30 02:15:00 CEST 2016 (+0200 from UTC)</li>
  <li>After time shift :  Sun Oct 30 02:15:00 CET 2016  (+0100 from UTC)</li>
  </ul>
  <h2>Issue</h2>
  <p>After instantiating a <code>GregorianCalendar</code> object at the Paris timezone (using <code>SimpleDateFormat</code>), we get our 02:15 AM before backward shift as expected.</p>
  <p>But if we want to set minutes to this object using <code>.set()</code>, the +0200 offset information gets corrupted to +0100 (&quot;same time&quot;, but after time shift)
  Is there any means of doing it this way, as the method <code>.add()</code> actually preserves the offset information?</p>
  <h2>Example</h2>
  <pre><code>    // Instantiation
      GregorianCalendar gc1 = new GregorianCalendar(TimeZone.getTimeZone(&quot;Europe/Paris&quot;));
      gc1.setTime(new SimpleDateFormat(&quot;yyyy-MM-dd hh:mm:ss Z&quot;).parse(&quot;2016-10-30 02:15:00 +0200&quot;));
      GregorianCalendar gc2 = (GregorianCalendar) gc1.clone();
      
      System.out.println(gc1.getTime()); // Output : Sun Oct 30 02:15:00 CEST 2016 ; OK
      System.out.println(gc2.getTime()); // Output : Sun Oct 30 02:15:00 CEST 2016 ; OK
      
      // Set/add minutes
      gc1.set(Calendar.MINUTE, 10);
      gc2.add(Calendar.MINUTE, 10);
      
      System.out.println(gc1.getTime()); // Output : Sun Oct 30 02:10:00 CET 2016 ; Unexpected
      System.out.println(gc2.getTime()); // Output : Sun Oct 30 02:25:00 CEST 2016 ; OK
  </code></pre>