Why does converting System.nanoTime() to a Calendar object give me the wrong current date?
<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>
