title: Why does converting System.nanoTime() to a Calendar object give me the wrong current date?
body: <p>If I understand correctly, using <code>System.nanoTime()</code> is a more accurate way of keeping a marker to the current time than <code>System.currentTimeInMillis()</code>, even if the system time was changed. So why is it that when I convert the long value of <code>nanoTime()</code> to a <code>Calendar</code> object, the output is wrong?</p>
  
  <pre><code>import java.util.Calendar;
  
  public class Test {
  
      public static void main(String[] args) {
          Calendar c = Calendar.getInstance();
          c.setTimeInMillis(System.currentTimeMillis());
          System.out.println(c.get(Calendar.MONTH) + " " + c.get(Calendar.DATE) + " " + c.get(Calendar.YEAR) +
                  " " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND)
                  + ":" + c.get(Calendar.MILLISECOND));
      }
  
  }
  </code></pre>