在java開發過程中經常會遇到統計某一天或是某一個月的數據,因此常常需要獲取截取數據的兩個時間戳(比如統計今天的數據,則需要獲取一個開始時間為今天零點以及一個結束時間為明天零點),然后根據數據相關的時間是否在該時間區間內來判斷是否將其計入統計數據中。
話不多說,首先我們先拿上面的例子說起吧。如何獲取今天零點以及明天零點的兩個時間戳。
public Long getToday(){
DateTime now = new DateTime();
return new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0, 0).getMillis();
}
public Long getTomorrow(){
DateTime now = new DateTime();
return new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0, 0).plusDays(1).getMillis();
}
上面的方法中用到了DateTime中的plusDays(),同理,你如果需要獲取下 個星期(年,月,時,分,秒,毫秒)前的時間戳,都有同樣的plusYears(int X),plusMonths(int X)等等與之對應,如果要獲取今天之前的就把傳入一個負整數參數即可。
然而很多時候我們需要某個特定時間的時間戳,比如這個月5號14點23分6秒138毫秒的時間戳(這個時間并沒有特殊的含義,隨便選的)。
public Long getTime(){
Long now = new Date().getTime();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(now);
calendar.set(Calendar.DAY_OF_MONTH, 5);
calendar.set(Calendar.HOUR, 14);
calendar.set(Calendar.MINUTE, 23);
calendar.set(Calendar.SECOND, 6);
calendar.set(Calendar.MILLISECOND, 138);
return calendar.getTimeInMillis();
}
再比如我們可能需要知道這個星期二的10點10分10秒的時間戳。
public Long getTime(){
Long now = new Date().getTime();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(now);
calendar.set(Calendar.DAY_OF_WEEK, 2);
calendar.set(Calendar.HOUR, 10);
calendar.set(Calendar.MINUTE, 10);
calendar.set(Calendar.SECOND, 10);
return calendar.getTimeInMillis();
}
以上就是我總結的一些獲取時間戳的方法,如果平時需要快速進行時間與時間戳之間的轉換,也可以在站長工具得到快速解決:Unix時間戳