Java實(shí)現(xiàn)的日期處理類(lèi)完整實(shí)例
本文實(shí)例講述了Java實(shí)現(xiàn)的日期處理類(lèi)。分享給大家供大家參考,具體如下:
開(kāi)發(fā)中常常要使用日期,先小結(jié)如下,以備后用。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FormatTime {
private final static SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
private final static SimpleDateFormat sdfymdhm = new SimpleDateFormat("yyyyMMddHHmmss");
private final static SimpleDateFormat sdfymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
*
* @Title: getCurrentDay
* @Description: TODO 獲取當(dāng)天時(shí)間(20161109)
* @return
*/
public static String getCurrentDay(){
return sdf.format(new Date());
}
/**
*
* @Title: fTime2
* @Description: TODO 獲取time這個(gè)日期以前dayAgo天的日期
* @return
*/
public static String fTime(String time,int dayAgo){
Date date = null;
try {
date = sdf.parse(time);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
if(dayAgo>0){
calendar.add(Calendar.DAY_OF_MONTH, -dayAgo);//前15天數(shù)據(jù)
date = calendar.getTime();
calendar.setTime(date);
}
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
String mon="";
String d="";
if(month<10){
mon="0"+month;
}else{
mon=month+"";
}
if(day<10){
d="0"+day;
}else{
d=""+day;
}
String ret=year+""+mon+""+d;
return ret;
}
/**
*
* @Title: fTime2
* @Description: TODO 獲取time這個(gè)日期以后dayAfter天的日期
* @return
*/
public static String fTime2(String time,int dayAfter){
Date date = null;
try {
date = sdf.parse(time);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
if(dayAfter>0){
calendar.add(Calendar.DAY_OF_MONTH, +dayAfter);//后15天數(shù)據(jù)
date = calendar.getTime();
calendar.setTime(date);
}
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
String mon="";
String d="";
if(month<10){
mon="0"+month;
}else{
mon=month+"";
}
if(day<10){
d="0"+day;
}else{
d=""+day;
}
String ret=year+""+mon+""+d;
return ret;
}
/**
*
* @Title: getDefaultTime
* @Description: TODO 獲取昨天的日期
* @return
*/
public static String getDefaultTime(){
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -1);//前1天
Date date = calendar.getTime();
String time=sdf.format(date);
return time;
}
/**
*
* @Title: getSunday
* @Description: TODO 獲取最近一個(gè)星期天
* @return
*/
public static String getSunday(){
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return f.format(c.getTime());
}
/**
*
* @Title: getMonthFirstDay
* @Description: TODO 獲取本月第一天
* @return
*/
public static String getCurrentMonthFirstDay(){
Calendar cal_1=Calendar.getInstance();//獲取當(dāng)前日期
cal_1.add(Calendar.MONTH, 0);
cal_1.set(Calendar.DAY_OF_MONTH,1);//設(shè)置為1號(hào),當(dāng)前日期既為本月第一天
String firstDay = sdf.format(cal_1.getTime());
return firstDay;
}
/**
*
* @Title: getMonthFirstDay
* @Description: TODO 獲取上月第一天
* @return
*/
public static String getPreviousMonthFirstDay(){
//獲取當(dāng)前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH,1);//設(shè)置為1號(hào),當(dāng)前日期既為本月第一天
String first = sdf.format(c.getTime());
return first;
}
/**
*
* @Title: getMonthFirstDay
* @Description: TODO 獲取上月最后一天
* @return
*/
public static String getPreviousMonthLastDay(){
//獲取當(dāng)前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH,0);//
String lastDay = sdf.format(ca.getTime());
return lastDay;
}
/**
*
* @Title: getCurrentMonthLastDay
* @Description: TODO 獲取指定時(shí)間最后一天
* @return
*/
public static String getCurrentMonthLastDay(String time){
Date date =null;
try {
date= sdf.parse(time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//獲取當(dāng)前月最后一天
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.set(Calendar.DAY_OF_MONTH,
ca.getActualMaximum(Calendar.DAY_OF_MONTH)); //
String lastDay = sdf.format(ca.getTime());
return lastDay;
}
/***
*
* @Title: getCurrentWeekDay
* @Description: TODO 獲取本周周一
*/
public static String getCurrentMonday(){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);//將每周第一天設(shè)為星期一,默認(rèn)是星期天
cal.add(Calendar.DATE, 0);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
String monday = sdf.format(cal.getTime());
return monday;
}
/***
*
* @Title: getPreviousSunday
* @Description: TODO 獲取上周周日
*/
public static String getPreviousSunday(){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);//將每周第一天設(shè)為星期一,默認(rèn)是星期天
cal.add(Calendar.DATE, -1*7);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
String sunday =sdf.format(cal.getTime());
return sunday;
}
/**
*
* @Title: getMiniSencond
* @Description: TODO 將日期轉(zhuǎn)換為毫秒數(shù)
* @param str
* @return
*/
public static String getMiniSencond(String str){
long millionSeconds=0;
try {
millionSeconds = sdfymdhm.parse(str).getTime();//毫秒
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return millionSeconds+"";
}
/**
*
* @Title: getDateSencond
* @Description: TODO 將日期轉(zhuǎn)換為毫秒數(shù)
* @param str
* @return
*/
public static long getDateSencond(String str){
long millionSeconds=0;
try {
millionSeconds = sdfymdhms.parse(str).getTime();//毫秒
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return millionSeconds;
}
/**
* 計(jì)算日期相差天數(shù)
* @param str1
* @param str2
* @return
*/
public static int getDistanceOfTwoDate(String str1,String str2){
int result=0;
try{
Date date1 = sdf.parse(str1);
Date date2 =sdf.parse(str2);
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(date1);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(date2);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
result = day1-day2;
}catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
*
* @Title: long2Date
* @Description: TODO long 轉(zhuǎn)日期(年-月-日 時(shí)-分-秒)
* @param timestamp
* @return
*/
public static String longToDate(Long msecond){
Date date = new Date(msecond);
return sdfymdhms.format(date);
}
}
PS:這里再為大家推薦幾款關(guān)于日期與天數(shù)計(jì)算的在線工具供大家使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線萬(wàn)年歷日歷:
http://tools.jb51.net/bianmin/wannianli
在線陰歷/陽(yáng)歷轉(zhuǎn)換工具:
http://tools.jb51.net/bianmin/yinli2yangli
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《java日期與時(shí)間操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
詳解Spring連接數(shù)據(jù)庫(kù)的幾種常用的方式
本篇文章主要介紹了Spring連接數(shù)據(jù)庫(kù)的幾種常用的方式,具有一定的參考價(jià)值,有需要的可以了解一下。2016-12-12
Java利用TreeUtils工具類(lèi)實(shí)現(xiàn)列表轉(zhuǎn)樹(shù)
在開(kāi)發(fā)過(guò)程中,總有列表轉(zhuǎn)樹(shù)的需求,幾乎是項(xiàng)目的標(biāo)配,有沒(méi)有一種通用且跨項(xiàng)目的解決方式呢?本文將基于Java8的Lambda?表達(dá)式和Stream等知識(shí),使用TreeUtils工具類(lèi)實(shí)現(xiàn)一行代碼完成列表轉(zhuǎn)樹(shù)這一通用型需求,需要的可以參考一下2022-11-11
Springboot SseEmitter流式輸出的實(shí)現(xiàn)代碼
本文介紹了Spring Boot中使用SseEmitter實(shí)現(xiàn)流式輸出的原理和示例代碼,通過(guò)SseEmitter,可以實(shí)現(xiàn)客戶(hù)端和服務(wù)器之間的實(shí)時(shí)通信,服務(wù)器可以分塊發(fā)送數(shù)據(jù),而客戶(hù)端可以實(shí)時(shí)接收和處理這些數(shù)據(jù),,感興趣的朋友一起看看吧2025-03-03
SpringBoot項(xiàng)目使用內(nèi)置的單機(jī)任務(wù)調(diào)度功能詳解
這篇文章主要介紹了SpringBoot項(xiàng)目使用內(nèi)置的單機(jī)任務(wù)調(diào)度功能詳解,SpringBoot框架中提供了2個(gè)注解來(lái)讓開(kāi)發(fā)者快速配置來(lái)實(shí)現(xiàn)單機(jī)定時(shí)任務(wù)調(diào)度的功能,分別是@EnableScheduling和 @Scheduled,需要的朋友可以參考下2024-01-01
IntelliJ?IDEA?2020.2.3永久破解激活教程(親測(cè)有效)
intellij?idea?2022是一款市面上最好的JAVA?IDE編程工具,該工具支持git、svn、github等版本控制工具,整合了智能代碼助手、代碼自動(dòng)提示等功能,本教程給大家分享IDEA?2022最新永久激活碼,感興趣的朋友參考下吧2020-10-10
Java語(yǔ)法基礎(chǔ)之循環(huán)結(jié)構(gòu)語(yǔ)句詳解
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)法基礎(chǔ)之循環(huán)結(jié)構(gòu)語(yǔ)句,感興趣的小伙伴們可以參考一下2016-09-09

