title: Why is subtracting these two times (in 1927) giving a strange result?
body: <p>If I run the following program, which parses two date strings referencing times 1 second apart and compares them:</p>
  <pre><code>public static void main(String[] args) throws ParseException {
      SimpleDateFormat sf = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);  
      String str3 = &quot;1927-12-31 23:54:07&quot;;  
      String str4 = &quot;1927-12-31 23:54:08&quot;;  
      Date sDt3 = sf.parse(str3);  
      Date sDt4 = sf.parse(str4);  
      long ld3 = sDt3.getTime() /1000;  
      long ld4 = sDt4.getTime() /1000;
      System.out.println(ld4-ld3);
  }
  </code></pre>
  <p><strong>The output is:</strong></p>
  <pre><code>353
  </code></pre>
  <p>Why is <code>ld4-ld3</code>, not <code>1</code> (as I would expect from the one-second difference in the times), but <code>353</code>?</p>
  <p>If I change the dates to times 1 second later:</p>
  <pre><code>String str3 = &quot;1927-12-31 23:54:08&quot;;  
  String str4 = &quot;1927-12-31 23:54:09&quot;;  
  </code></pre>
  <p>Then <code>ld4-ld3</code> will be <code>1</code>.</p>
  <hr />
  <p><strong>Java version:</strong></p>
  <pre class="lang-none prettyprint-override"><code>java version &quot;1.6.0_22&quot;
  Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
  Dynamic Code Evolution Client VM (build 0.2-b02-internal, 19.0-b04-internal, mixed mode)
  </code></pre>
  <pre class="lang-java prettyprint-override"><code>Timezone(`TimeZone.getDefault()`):
  
  sun.util.calendar.ZoneInfo[id=&quot;Asia/Shanghai&quot;,
  offset=28800000,dstSavings=0,
  useDaylight=false,
  transitions=19,
  lastRule=null]
  
  Locale(Locale.getDefault()): zh_CN
  </code></pre>