Deprecated: 函数 get_currentuserinfo 自版本 4.5.0 起已弃用!请使用 wp_get_current_user() 替代。 in /data/home/qxu1142130176/htdocs/wp-includes/functions.php on line 5383
最新消息:

java获取时间戳方法以及速度对比

Java 前端收藏 1776浏览 0评论

目前获取毫秒值大概有下面三种方法:

//方法 一  
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获取时间戳方法以及速度对比

您必须 登录 才能发表评论!