目前获取毫秒值大概有下面三种方法:
//方法 一 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获取时间戳方法以及速度对比