时间转换工具类
package com.wbc.demo.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author Tim
* @Description
* @create 2021-09-02 14:49
*/
public class DateUtil {
/**
* 获取传入时间的年
* @param date
* @return
*/
public static int getYear(Date date) {
return Integer.parseInt(parseString(date,"yyyy"));
}
/**
* 获取传入时间的月份
* @param date
* @return
*/
public static int getMonth(Date date) {
return Integer.parseInt(parseString(date,"MM"));
}
/**
* 获取传入时间的日期
* @param date
* @return
*/
public static int getDay(Date date) {
return Integer.parseInt(parseString(date,"dd"));
}
/**
* 获取当前时间的年
* @return
*/
public static int thisYear() {
return Integer.parseInt(now("yyyy"));
}
/**
* 获取当前时间的 月
* @return
*/
public static int thisMonth() {
return Integer.parseInt(now("MM"));
}
/**
* 获取当前时间的 日期
* @return
*/
public static int thisDay() {
return Integer.parseInt(now("dd"));
}
/**
*
* 获取当月 的下一个月1号
* @return
*/
public static String firstDayOfNextMonth() {
return firstDayOfNextMonth(new Date());
}
/**
* 获取传入日期的 下一个月1号
* @param date
* @return
*/
public static String firstDayOfNextMonth(String date) {
return firstDayOfNextMonth(parseDate(date));
}
/**
* 获取传入日期的 下一个月1号
* @param date
* @return
*/
public static String firstDayOfNextMonth(Date date) {
int year = getYear(date);
int month = getMonth(date);
month++;
if(month>13){
throw new RuntimeException("month is error");
}
if(month==13){
month = 1;
year++;
}
String mon = "";
if(month<10){
mon = "0";
}
mon = mon + month;
StringBuffer sb = new StringBuffer();
sb.append(year);
sb.append("-");
sb.append(mon);
sb.append("-01");
return sb.toString();
}
/**
* 获取传入月份的 1号
* @param date
* @return
*/
public static String firstDayOfMonth(Date date) {
return getFirstDayOfMonth(date);
}
/**
* 获取传入月份的 1号
* @param date
* @return
*/
public static String firstDayOfMonth(String date) {
return getFirstDayOfMonth(date);
}
/**
* 获取本月第一天
* @return
*/
public static String firstDayOfMonth() {
return getFirstDayOfMonth(new Date());
}
/**
* 获取传入月份的1号
* @param obj 传入Date 或者 String
* @return 传入时间的 1号
*/
private static String getFirstDayOfMonth(Object obj) {
String yearMonth = null;
if(obj instanceof Date){
yearMonth = parseString((Date) obj, "yyyy-MM");
}
if(obj instanceof String){
yearMonth = ((String) obj).substring(0, 7);
}
return yearMonth+"-01";
}
/**
*
* @param dateString 传入时间 支持 年月日时分秒 格式 无视连接符
* @return Date 类型的时间
*/
public static Date parseDate(String dateString) {
dateString = replaceInt(dateString);
String pattern = "yyyyMMddHHmmss";
if("".equals(dateString)){
throw new RuntimeException("dateString is null or empty");
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern.substring(0,dateString.length()));
Date parse = null;
try {
parse = sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
//传入的字符串只返回数字
private static String replaceInt(String dateString) {
StringBuilder sb = new StringBuilder();
char[] chars = dateString.toCharArray();
for (char aChar : chars) {
if(aChar>47&&aChar<58){
sb.append(aChar);
}
}
return sb.toString();
}
private static String defaultFormat = "yyyy-MM-dd HH:mm:ss";
/**
* 获取当前时间 格式为 yyyy-MM-dd HH:mm:ss
* @return 默认格式的当前时间
*/
public static String now(){
return parseString(new Date(),defaultFormat);
}
/**
* 获取当前时间
* @param format 自定义格式
* @return 自定义格式的当前时间
*/
public static String now(String format){
return parseString(new Date(),format);
}
/**
* 获取今天的年月日
* @return
*/
public static String today(){
return parseString(new Date(),"yyyy-MM-dd");
}
/**
* 自定义时间和格式
* @param date 时间
* @param format 格式
* @return 自定义格式的字符串
*/
public static String parseString(Date date,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
/**
*
* @param date 时间
* @return 默认格式的字符串
*/
public static String parseString(Date date){
return parseString(date,defaultFormat);
}
}
Demo类
package com.wbc.demo.util;
import java.util.Date;
public class TestDateUtil {
public static void main(String[] args) {
//获取当前时间
System.out.println("获取当前时间:"+DateUtil.now());
//获取今天
System.out.println("获取今天:"+DateUtil.today());
//获取今年
System.out.println("获取今年:"+DateUtil.thisYear());
//获取这个月
System.out.println("获取这个月:"+DateUtil.thisMonth());
//获取今天
System.out.println("获取今天"+DateUtil.thisDay());
// String 格式转换为 Date
System.out.println("String 格式转换为 Date:"+DateUtil.parseDate("2010-12-12"));
// Date 格式转换为 String
System.out.println("Date 格式转换为 String:"+DateUtil.parseString(new Date()));
System.out.println("Date 格式转换为 String:"+DateUtil.parseString(new Date(),"yyyy/MM/dd HH:mm:ss"));
//获取指定日期的年 月 日
Date date = DateUtil.parseDate("2010-12-12");
System.out.println("获取传入日期的年:"+DateUtil.getYear(date));
System.out.println("获取传入日期的月:"+DateUtil.getMonth(date));
System.out.println("获取传入日期的日:"+DateUtil.getDay(date));
//获取本月的1号日期
System.out.println("获取本月的1号日期:"+DateUtil.firstDayOfMonth());
System.out.println("获取传入日期的1号日期::"+DateUtil.firstDayOfMonth(new Date()));
System.out.println("获取传入日期的1号日期:"+DateUtil.firstDayOfMonth("2021-02-01"));
System.out.println("获取下个月的1号日期:"+DateUtil.firstDayOfNextMonth());
System.out.println("获取传入日期的下个月的1号日期:"+DateUtil.firstDayOfNextMonth(new Date()));
System.out.println("获取传入日期的下个月的1号日期:"+DateUtil.firstDayOfNextMonth("2021-12-12"));
}
}