Java中時間格式處理,指定N天/小時等之后的時間


1)根據當前時間,獲取具體的時刻的時間

N天前

M小時之前

可用

new Date().getTime() - 24 * 60 * 60 * 1000*N【N天之前】
的方法來獲取處理時間之后的具體的值,
最終轉化為想要的時間格式
import java.text.SimpleDateFormat;
import java.util.Date;

public class getTime {

    public static void main(String[] args) {

        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date time = new Date(new Date().getTime() - 24 * 60 * 60 * 1000);
        System.out.println(sd.format(time));
        System.out.println(sd.format(new Date()));


        //想獲得N天之前或M天之后的時間
        int NDay = 5;
        int MDay = -10; //之后就傳負數

        Date timeN = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * NDay);
        Date timeM = new Date(new Date().getTime() - 24 * 60 * 60 * 1000 * MDay);

        System.out.println(sd.format(timeN));
        System.out.println(sd.format(timeM));


        //想獲得N小時之前或M小時之后的時間
        int NHour = 5;
        int MHour = -10; //之后就傳負數

        Date timeNHour = new Date(new Date().getTime() - 60 * 60 * 1000 * NHour);
        Date timeMHour = new Date(new Date().getTime() - 60 * 60 * 1000 * MHour);
        System.out.println(sd.format(timeNHour));
        System.out.println(sd.format(timeMHour));


        //想獲得N分鍾之前或M分鍾之后的時間
        int NMinute = 5;
        int MMinute = -10; //之后就傳負數

        Date timeNMinute = new Date(new Date().getTime() - 60 * 1000 * NMinute);
        Date timeMMiute = new Date(new Date().getTime() - 60 * 1000 * MMinute);
        System.out.println(sd.format(timeNMinute));
        System.out.println(sd.format(timeMMiute));


        //想獲得N秒之前或M秒之后的時間
        int NSecond = 5;
        int MSecond = -10; //之后就傳負數

        Date timeNSecond = new Date(new Date().getTime() - 1000 * NSecond);
        Date timeMSecond = new Date(new Date().getTime() - 1000 * MSecond);
        System.out.println(sd.format(timeNSecond));
        System.out.println(sd.format(timeMSecond));

        long Ntime = getDetailtime(3, 20, 1, 1);
        System.out.println(sd.format(Ntime));
        System.out.println(Ntime);

        Date Ntime2 = getDetailDate(3, 20, 1, 1);
        System.out.println(sd.format(Ntime2));
        System.out.println(Ntime2);

    }


    public static Date getDetailDate(int Day, int Hour, int Minute, int Second) {
        Date timeN = new Date(new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000);
        return timeN;
    }


    public static long getDetailtime(int Day, int Hour, int Minute, int Second) {
        long timeN = new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000;
        return timeN;
    }


}

  那么想要更加具體的時間,比如讓用戶輸入具體的天,時,分鍾,秒等,可以獲取更加精准的想要的時刻

public static Date getDetailDate(int Day, int Hour, int Minute, int Second) {
        Date timeN = new Date(new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000);
        return timeN;
    }


    public static long getDetailtime(int Day, int Hour, int Minute, int Second) {
        long timeN = new Date().getTime() - Day * 24 * 60 * 60 * 1000 - Hour * 60 * 60 * 1000 - Minute * 60 * 1000 - Second * 1000;
        return timeN;
    }

  

2) 根據java.util.Calendar中的操作

ca.add(Calendar.DATE, -N);【減去N天】
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class getTime2 {

    public static void main(String[] args) {

        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        int N=2;

        Calendar ca = Calendar.getInstance();//得到一個Calendar的實例
        ca.setTime(new Date()); //設置時間為當前時間
        ca.add(Calendar.DATE, -N);
        long timeDay= ca.getTime().getTime();

        Calendar ca2 = Calendar.getInstance();//得到一個Calendar的實例
        ca2.setTime(new Date()); //設置時間為當前時間
        ca2.add(Calendar.HOUR, -N);
        long timeDay2= ca2.getTime().getTime();


        Calendar ca3 = Calendar.getInstance();//得到一個Calendar的實例
        ca3.setTime(new Date()); //設置時間為當前時間
        ca3.add(Calendar.MINUTE, -N);
        long timeDay3= ca3.getTime().getTime();

        Calendar ca4 = Calendar.getInstance();//得到一個Calendar的實例
        ca4.setTime(new Date()); //設置時間為當前時間
        ca4.add(Calendar.SECOND, -N);
        long timeDay4= ca4.getTime().getTime();

        System.out.println(sd.format(timeDay));
        System.out.println(sd.format(timeDay2));
        System.out.println(sd.format(timeDay3));
        System.out.println(sd.format(timeDay4));


        Calendar ca5 = Calendar.getInstance();//得到一個Calendar的實例
        ca5.setTime(new Date()); //設置時間為當前時間
        ca5.add(Calendar.MONTH, -N);
        long timeDay5= ca5.getTime().getTime();
        System.out.println(sd.format(timeDay5));


        Calendar ca6 = Calendar.getInstance();//得到一個Calendar的實例
        ca6.setTime(new Date()); //設置時間為當前時間
        ca6.add(Calendar.YEAR, -N);
        long timeDay6= ca6.getTime().getTime();
        System.out.println(sd.format(timeDay6));

    }
}

 

3)Java中Date 有一些不建議用的方法

 

4)運用已有的一些jar依賴,比如

org.apache.commons.lang3.time.DateUtils;

其中已經集成了的api

import org.apache.commons.lang3.time.DateUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestLongtime {

    public static void main(String[] args) {

        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        System.out.println(sd.format(new Date()));
        System.out.println(sd.format(new Date().getTime()));


        Date now = new Date();
        Date year   = DateUtils.addYears(now, -2);
        Date day    = DateUtils.addDays(now, -2);
        Date hour   = DateUtils.addHours(now, -2);
        Date minute = DateUtils.addMinutes(now, -2);
        Date second = DateUtils.addSeconds(now, -2);

        //long bb = Long.parseLong(startDate.toString());

        System.out.println(sd.format(year));
        System.out.println(sd.format(day));
        System.out.println(sd.format(hour));
        System.out.println(sd.format(minute));
        System.out.println(sd.format(second));

    }
}

  

5)常用的String類型轉換到long類型

long bb = Long.parseLong(startDate.toString());

6)Java中long類型的10位和13位的時間戳,轉換為可供查看的時間格式

如果接口文檔中規定的是String類型,要注意一定不能含有l,只能含有數字

public static String timestamp2Date(String str_num) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (str_num.length() == 13) {
            String date = sdf.format(new Date(toLong(str_num)));
            System.out.println("將13位時間戳:" + str_num + "轉化為字符串:" + date);
            return date;
        } else {
            String date = sdf.format(new Date(toLong(str_num) * 1000));
            System.out.println("將10位時間戳:" + str_num + "轉化為字符串:" + date);
            return date;
        }
    }

    public static long toLong(String obj) {
         return Long.parseLong(obj);
    }

    @Test
    public void Te(){
        String aaa = "1566802997242";
        String bbb = "1566801239";
        System.out.println(aaa.length());
        System.out.println(bbb.length());
        timestamp2Date(aaa);
        timestamp2Date(bbb);

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM