java中日期常用轉換處理

1.String轉Date

    private void StringtoDate() throws ParseException {
        String dateStr = "2018-08-07 16:24:35";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(dateStr);
    }

2.Date轉String

    private void DatetoString() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String dateStr = sdf.format(date);
    }

3.時間戳轉Date

    private void timeStamptoDate() throws ParseException {
        long timeStamp = System.currentTimeMillis();
        Date date = new Date();
    }

4.Date轉時間戳

    private void DatetotimeStamp() throws ParseException {
        Date date = new Date();
        long timeStamp = date.getTime();
    }

在date和時間戳互相轉換的過程中,並不是在轉換,時間戳是Date類的一個屬性,可以把轉換理解爲拿和調用構造,這點在Date的源碼中可以看出。

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>
{
    private static final BaseCalendar gcal =
                                CalendarSystem.getGregorianCalendar();
    private static BaseCalendar jcal;
	//此處爲時間戳保存的變量,使用了transient 關鍵字防止此變量被序列化
    private transient long fastTime;
    ..............
	//無參構造,當我們調用new Date()時,其實Date類自動調用了其有參構造,並傳輸了System.currentTimeMillis()系統時間ms爲參數
    public Date() {
        this(System.currentTimeMillis());
    }
    //有參構造 這裏是把參數賦值,完成實例化
     public Date(long date) {
        fastTime = date;
    }
    ...............

5.處理獲取某n天前/後的時間

  /**
     * 處理加減天數
     * 
     * @param strDate 需要處理的時間集合
     * @param day     需要增減的天數
     */
    private List<String> handleDate(List<String> strDate, int day) {
        List<String> formatDateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Calendar calendar = Calendar.getInstance();
        try {
            for (String date : strDate) {
                calendar.setTime(sdf.parse(date));
                calendar.add(Calendar.DATE, day);
                formatDateList.add(sdf.format(calendar.getTime()));
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return formatDateList;
    }

6.處理多個時間段間隔某個時段的時間點

    /**
     * 處理時間段內的時間點
     * 
     * @param each_time 時間間隔(分鐘)
     * @param time      時間段中間用,隔開2018-08-08 15:04,2018-08-08 18:04
     * @return
     */
    public List<String> handleTime(int each_time, String... time) {
        List<String> formatDateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            for (String times : time) {
                String timer[] = times.split("-");
                long startTime = sdf.parse(timer[0]).getTime();
                Long endTime = sdf.parse(timer[1]).getTime();
                while (startTime <= endTime) {
                    formatDateList.add(sdf.format(new Date(startTime)));
                    startTime += 60 * 1000 * each_time;
                }
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return formatDateList;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章