目前获取毫秒值大概有下面三种方法:
//方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime();
这三种方法中,哪一种最快?
import java.util.Calendar; import java.util.Date; public class TimeTest { private static long _TEN_THOUSAND=10000; public static void main(String[] args) { long times=1000*_TEN_THOUSAND; long t1=System.currentTimeMillis(); testSystem(times); long t2=System.currentTimeMillis(); System.out.println(t2-t1); testCalander(times); long t3=System.currentTimeMillis(); System.out.println(t3-t2); testDate(times); long t4=System.currentTimeMillis(); System.out.println(t4-t3); } public static void testSystem(long times){//use 188 for(int i=0;i<times;i++){ long currentTime=System.currentTimeMillis(); } } public static void testCalander(long times){//use 6299 for(int i=0;i<times;i++){ long currentTime=Calendar.getInstance().getTimeInMillis(); } } public static void testDate(long times){ for(int i=0;i<times;i++){ long currentTime=new Date().getTime(); } } }
运行结果:
187 7032 297
结果发现 System.currentTimeMillis() 这种方式速度最快
Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,看看源码会发现,Canlendar因为要处理时区问题会耗费很多的时间。
所以建议多使用第一种方式。另外,System 类中有很多高效的方法,比如,arrayCopy 之类的。
java 时间戳和Date相互转换
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtils { /** * unix时间戳转换为dateFormat * * @param beginDate * @return */ public static String timestampToDate(String beginDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sd = sdf.format(new Date(Long.parseLong(beginDate))); return sd; } /** * 自定义格式时间戳转换 * * @param beginDate * @return */ public static String timestampToDate(String beginDate,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); String sd = sdf.format(new Date(Long.parseLong(beginDate))); return sd; } /** * 将字符串转为时间戳 * * @param user_time * @return */ public static String dateToTimestamp(String user_time) { String re_time = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date d; try { d = sdf.parse(user_time); long l = d.getTime(); String str = String.valueOf(l); re_time = str.substring(0, 10); } catch (ParseException e) { e.printStackTrace(); } return re_time; } }
转载请注明:前端收藏 » java获取时间戳方法以及速度对比