calendar.getTimeInMillis() 和 System.currentTimeMillis() 的区别
@Test public void test01(){ Calendar calendar=Calendar.getInstance(); // calendar.set(2019,06,04,16,42,50); long date1=calendar.getTimeInMillis(); long date2=System.currentTimeMillis(); Date turnDate1=new Date(date1); Date turnDate2=new Date(date2); SimpleDateFormat fm=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(fm.format(turnDate1)); System.out.println(fm.format(turnDate2)); }
两个时间是一样的。
2.性能比较
/** * 各循环十万次获取时间戳 */ @Test public void test03(){ Calendar calendar=Calendar.getInstance(); long startTime=System.currentTimeMillis(); for(long i=0;i<100000;i++){ long date1=calendar.getTimeInMillis(); } System.out.println("calender花费的时间:"+(System.currentTimeMillis()-startTime)); long startTime2=System.currentTimeMillis(); for(long i=0;i<100000;i++){ long date2=System.currentTimeMillis(); } System.out.println("calender花费的时间:"+(System.currentTimeMillis()-startTime2)); }
本机测试发现值不稳定。查看源码System.currentTimeMillis 使用的nativae 方法,猜测是这种取时间更快。欢迎指正