Java日期時(shí)間格式化操作DateUtils 的整理
Java日期時(shí)間格式化操作DateUtils 的整理
直接上代碼,總結(jié)了開(kāi)發(fā)過(guò)程中經(jīng)常用到的日期時(shí)間格式化操作!
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* ClassName: DateUtils <br/>
* Description:時(shí)間操作工具類
*/
public class DateUtils {
private static final String[] UNIT_DESC = new String[]{"天", "小時(shí)", "分鐘", "秒"};
/**
* 獲得當(dāng)前系統(tǒng)時(shí)間,格式為yyyyMMdd
*
* @return 格式化后的時(shí)間
*/
public static String currentYYYYMMDD() {
return getStrByDate(new Date(), "yyyyMMdd");
}
/**
* 獲得當(dāng)前系統(tǒng)時(shí)間,格式為HHmmss
*
* @return 格式化后的時(shí)間
*/
public static String currentHHMMSS() {
return getStrByDate(new Date(), "HHmmss");
}
/**
* 獲得當(dāng)前系統(tǒng)時(shí)間,格式為yyyyMMddHHmmss
*
* @return 格式化后的時(shí)間
*/
public static String currentYYYYMMDDHHmmss() {
return getStrByDate(new Date(), "yyyyMMddHHmmss");
}
/**
* 根據(jù)給定的字符串如:yyyy-MM-dd HH:mm:ss,(必須是這種格式) 返回一個(gè)日期日期形式
*
* @param strDate 要拋析的字符串,且字符串的形式必須:2007-09-10 07:00:00
* @return 將字符串拋析成日期的格式返回
* @throws ParseException 解析 format 字段失敗
*/
public static java.util.Date getDateByStr(String strDate, String format) throws ParseException {
assert strDate != null && format != null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.parse(strDate);
}
/**
* 根據(jù)給定的日期,返回給定的字符串, 返回 字符串的形式是:yyyy-MM-dd HH:mm:ss
*
* @param date 要格式化的日期
* @return 將日期格式化后返回的字符串,以這中格式返回:yyyy-MM-dd HH:mm:ss
*/
public static String getStrByDate(Date date, String format) {
assert date != null && format != null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
/**
* 得到當(dāng)前時(shí)間
*
* @return 當(dāng)前時(shí)間
*/
public static Date getDayOfMonth() {
Calendar now = Calendar.getInstance();
return now.getTime();
}
/**
* 得到每月第一天
*
* @param date 日期
* @return 日期月份的第一天
*/
public static Date getFirstDayOfMonth(Date date) {
Calendar nowday = Calendar.getInstance();
nowday.setTime(date);
nowday.set(Calendar.DATE, 1);// 把日期設(shè)置為當(dāng)月第一天
return nowday.getTime();
}
/**
* 得到每月最后一天
*
* @param date 日期
* @return 日期月份最后一天
*/
public static Date getLastDayOfMonth(Date date) {
Calendar nowday = Calendar.getInstance();
nowday.setTime(date);
nowday.set(Calendar.DATE, 1);// 把日期設(shè)置為當(dāng)月第一天
nowday.roll(Calendar.DATE, -1);// 日期回滾一天,也就是最后一天
return nowday.getTime();
}
/**
* 獲取當(dāng)前年份 格式:yyyy
*
* @param date 當(dāng)前時(shí)間
* @return year
*/
public static String getCurrYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
Date currYear = calendar.getTime();
return String.valueOf(dateFormat.format(currYear));
}
/**
* 獲取當(dāng)前月份 格式:MM
*
* @param date 當(dāng)前時(shí)間
* @return Date
*/
public static String getCurrMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
Date currMonth = calendar.getTime();
return String.valueOf(dateFormat.format(currMonth));
}
/**
* 得到此日期的最后一天
*
* @param d 日期
* @return 最后一天
*/
public static Date getLastDayByDate(Date d) {
Calendar newday = Calendar.getInstance();
newday.setTime(d);
int lastday;
int month = newday.get(Calendar.MONTH);
do {
lastday = newday.get(Calendar.DAY_OF_MONTH);
newday.add(Calendar.DAY_OF_MONTH, 1);
} while (newday.get(Calendar.MONTH) == month);
newday.set(Calendar.MONTH, month);
newday.set(Calendar.DAY_OF_MONTH, lastday);
return newday.getTime();
}
/**
* 將 yyyyMMdd 的字符竄 轉(zhuǎn)化成 yyyy-MM-dd
*
* @param dateString yyyyMMdd格式的日期
* @return yyyy-MM-dd格式的日期
* @throws ParseException
*/
public static String formatyyyyMMdd(String dateString) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = simpleDateFormat.parse(dateString);
SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd");
return formatStr.format(date);
}
/**
* 將 yyyyMMdd 的字符竄 轉(zhuǎn)化成 yyyy-MM-dd HH:mm:ss
*
* @param dateString
* @return
* @throws ParseException
*/
public static String formatyyyyMMddHHmmss(String dateString) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = simpleDateFormat.parse(dateString);
SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return formatStr.format(date);
}
/**
* 獲取當(dāng)前年份 格式:yyyy
*
* @return Date
*/
public static int getCurrYear() {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
Date currYearFirst = calendar.getTime();
return Integer.valueOf(dateFormat.format(currYearFirst));
}
/**
* 獲取當(dāng)前時(shí)間前三月
*
* @return Date
*/
public static Date getLastThreeMonths() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -3);
calendar.add(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 獲取當(dāng)前時(shí)間前一個(gè)月
*
* @return Date
*/
public static Date getLastOneMonths() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.add(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 獲取當(dāng)前時(shí)間前六個(gè)月
*
* @return Date
*/
public static Date getLastSixMonths() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -6);
calendar.add(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 獲取某年第一天日期
*
* @param year 年份
* @return Date
*/
public static Date getCurrYearFirst(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
return calendar.getTime();
}
/**
* 獲取某年最后一天日期
*
* @param year 年份
* @return Date
*/
public static Date getCurrYearLast(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
return calendar.getTime();
}
/**
* 格式化時(shí)間
*
* @param date 時(shí)間
* @param format 格式化模板
* @return 格式化后的時(shí)間
*/
public static String date2Str(Date date, String format) {
return getStrByDate(date, format);
}
/**
* 獲得指定日期的前一天 yyyy-MM-dd
* @param date
* @return
*/
public static String getSpecifiedDayBefore(Date date, String dateFormat){
if (date == null) return null;
Calendar c = Calendar.getInstance();
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
String dayBefore=new SimpleDateFormat(dateFormat).format(c.getTime());
return dayBefore;
}
/**
* 獲得指定日期的后一天 yyyy-MM-dd
*
* @param date
* @return
*/
public static String getSpecifiedDayAfter(Date date, String dateFormat) {
if (date == null) return null;
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day + 1);
String dayAfter = new SimpleDateFormat(dateFormat).format(c.getTime());
return dayAfter;
}
/**
* 格式化持續(xù)時(shí)間<br/>
* 將持續(xù)時(shí)間,格式化為 xx天xx小時(shí)xx分鐘xx秒 如果 "xx" 為0 自動(dòng)缺省。
*
* @param seconds 持續(xù)時(shí)間,單位(秒)
* @return 格式化后的字符串
* @see TimeUnit 時(shí)間單位轉(zhuǎn)換工具
* @since 1.5
*/
public static String convertSeconds2Str(long seconds) {
StringBuilder sb = new StringBuilder();
long[] date = {TimeUnit.SECONDS.toDays(seconds), TimeUnit.SECONDS.toHours(seconds) % 24, TimeUnit.SECONDS.toMinutes(seconds) % 60, TimeUnit.SECONDS.toSeconds(seconds) % 60};
for (int i = 0; i < date.length; i++) {
long l = date[i];
if (l > 0) sb.append(l).append(UNIT_DESC[i]);
}
return sb.toString();
}
/**
* 格式化持續(xù)時(shí)間
* 將持續(xù)時(shí)間,格式化為 xx天xx小時(shí)xx分鐘xx秒 如果 "xx" 為0 自動(dòng)缺省。
*
* @param seconds 持續(xù)時(shí)間,單位(分鐘)
* @return 格式化后的字符串
* @see TimeUnit 時(shí)間單位轉(zhuǎn)換工具
* @since 1.5
*/
public static String convertMinute2Str(long minute) {
StringBuilder sb = new StringBuilder();
long[] date = {TimeUnit.SECONDS.toHours(minute) % 24,TimeUnit.SECONDS.toMinutes(minute) % 60, TimeUnit.SECONDS.toSeconds(minute) % 60};
for (int i = 0; i < date.length; i++) {
long l = date[i];
if (l > 0) sb.append(l).append(UNIT_DESC[i]);
}
return sb.toString();
}
}
以上就是關(guān)于java 日期格式化操作的所有內(nèi)容,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Java如何根據(jù)前端返回的字段名進(jìn)行查詢數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Java如何根據(jù)前端返回的字段名進(jìn)行查詢數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
Spring Boot使用過(guò)濾器和攔截器分別實(shí)現(xiàn)REST接口簡(jiǎn)易安全認(rèn)證示例代碼詳解
這篇文章主要介紹了Spring Boot使用過(guò)濾器和攔截器分別實(shí)現(xiàn)REST接口簡(jiǎn)易安全認(rèn)證示例代碼,通過(guò)開(kāi)發(fā)實(shí)踐,理解過(guò)濾器和攔截器的工作原理,需要的朋友可以參考下2018-06-06
Java 中HttpURLConnection附件上傳的實(shí)例詳解
這篇文章主要介紹了Java 中HttpURLConnection附件上傳的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能掌握這樣的知識(shí)內(nèi)容,需要的朋友可以參考下2017-09-09
Spring Boot實(shí)現(xiàn)郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了Spring Boot實(shí)現(xiàn)郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
微信開(kāi)發(fā)準(zhǔn)備第二步 springmvc mybatis項(xiàng)目結(jié)構(gòu)搭建
這篇文章主要為大家詳細(xì)介紹了微信開(kāi)發(fā)準(zhǔn)備第二步,springmvc和mybatis項(xiàng)目結(jié)構(gòu)的搭建,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Java通過(guò)jersey實(shí)現(xiàn)客戶端圖片上傳示例
本篇文章主要介紹了Java通過(guò)jersey實(shí)現(xiàn)客戶端圖片上傳示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
SpringBoot實(shí)現(xiàn)初始化的三種策略模式
本文主要介紹了SpringBoot實(shí)現(xiàn)初始化的三種策略模式,包括默認(rèn)初始化策略、懶加載初始化策略和自定義初始化策略,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12

