import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
/**
* 返回上个月月份的格式化字符串时间yyyyMM
*
* @return 返回字符型日期时间
*/
public static String getLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(new Date());
calendar.add(Calendar.MONTH, -1);
if((calendar.get(Calendar.MONTH)+1)<10){
return(calendar.get(Calendar.YEAR) + "0" + (calendar.get(Calendar.MONTH)+1));
}else{
return(calendar.get(Calendar.YEAR) + "" + (calendar.get(Calendar.MONTH)+1));
}
}
/**
* 把一个字符串变成 一个java.util.Date类型的对象
*
* @param dateStr
* 日期字符串
*
* @param format
* 格式字符串
*
* 说明 这俩个参数必须相对应;
* @return 返回日期
*/
public static Date parseDate(String dateStr, String format) {
Date date = null;
Locale locale = new Locale("en", "US");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, locale);
// 必须捕获异常
try {
date = simpleDateFormat.parse(dateStr);
} catch (ParseException px) {
px.printStackTrace();
}
return date;
}
/**
*
* 一个java.util.Date类型的对象 变成一个字符串
*
* @param date
* 日期
* @param format
* 格式
* @return String 返回字符型日期
*/
public static String format(Date date, String format) {
String result = "";
try {
if (date != null) {
java.text.DateFormat df = new SimpleDateFormat(format);
result = df.format(date);
}
} catch (Exception e) {
}
return result;
}
/**
* 返回年份
*
* @param date
* 日期
* @return 返回年份
*/
public static int getYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR);
}
/**
* 返回月份
*
* @param date
* 日期
* @return 返回月份
*/
public static int getMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MONTH) + 1;
}
/**
* 返回周几
*
* @param date
* 日期
* @return 返回周几
*/
public static String getWeek(Date date) {
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 返回日份
*
* @param date
* 日期
* @return 返回日份
*/
public static int getDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_MONTH);
}
/**
* 返回小时
*
* @param date
* 日期
* @return 返回小时
*/
public static int getHour(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.HOUR_OF_DAY);
}
/**
* 返回分钟
*
* @param date
* 日期
* @return 返回分钟
*/
public static int getMinute(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MINUTE);
}
/**
* 返回秒钟
*
* @param date
* 日期
* @return 返回秒钟
*/
public static int getSecond(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.SECOND);
}
/**
* 返回毫秒
*
* @param date
* 日期
* @return 返回毫秒
*/
public static long getMillis(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 返回格式化的字符串日期yyyy/MM/dd
*
* @param date
* 日期
* @return 返回字符串日期
*/
public static String getStringDate(Date date) {
return format(date, "yyyy/MM/dd");
}
public static String getStringDate2(Date date) {
return format(date, "yyyyMMdd");
}
//返回本月1号
public static String getStringDate3(Date date) {return format(date, "yyyyMM")+"01";}
public static String getStringDate4(Date date) {
return format(date, "yyyyMM");
}
/**
* 返回格式化的字符串时间HH:mm:ss
*
* @param date
* 日期
* @return 返回字符串时间
*/
public static String getStringTime(Date date) {
return format(date, "HH:mm:ss");
}
/**
* 返回格式化的字符串时间yyyy-MM
*
* @param date
* 日期
* @return 返回字符串时间
*/
public static String getStringLineTime(Date date) {
return format(date, "yyyy-MM");
}
public static String getStringYear(Date date) {
return format(date, "yyyy");
}
/**
* 返回格式化的字符串时间yyyy/MM/dd HH:mm:ss
*
* @param date
* 日期
* @return 返回字符型日期时间
*/
public static String getStringDateTime(Date date) {
return format(date, "yyyy/MM/dd HH:mm:ss");
}/**
* 返回格式化的字符串时间yyyy-MM-dd HH:mm:ss
*
* @param date
* 日期
* @return 返回字符型日期时间
*/
public static String getStringDateNew(Date date) {
return format(date, "yyyy-MM-dd HH:mm:ss");
}
public static String getStringDateNew2(Date date) {
return format(date, "yyyy-MM");
}
public static String getStringDateTime2(Date date) {
String time=format(date, "yyyyMMddHHmm");
time=time.substring(0, time.length()-1)+"0";
return time;
}
public static String getStringDateTime4(Date date) {
String time=format(date, "yyyyMMddHHmm");
return time;
}
public static String getStringDateTime3(Date date) {
date=addMinute(date, -5);
String time=format(date, "yyyyMMddHHmm");
time=time.substring(0, time.length()-1)+"0";
return time;
}
/**
* 日期加天数
*
* @param date
* 日期
* @param day
* 天数
* @return 返回相加后的日期
*/
public static Date addDate(Date date, int day) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
return c.getTime();
}
public static Date addMonth(Date date, int month) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH,month);
return c.getTime();
}
/**
* 分钟加减
* @param date
* @param minute
* @return
*/
public static Date addMinute(Date date, int minute) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE,minute);
return c.getTime();
}
public static String addDate(String dateStr, int day) throws ParseException {
try{
SimpleDateFormat si = new SimpleDateFormat("yyyy-MM-dd");
long s=si.parse(dateStr).getTime();
Date dt = DateUtil.addDate(new Date(s),day);
return getStringDateTime(dt);
}catch(Exception ex){
return "";
}
}
public static String addData(String dateStr,int day,String format){
try{
SimpleDateFormat si = new SimpleDateFormat("yyyy-MM-dd");
long s=si.parse(dateStr).getTime();
Date dt = DateUtil.addDate(new Date(s),day);
return format(dt,format);
}catch(Exception ex){
return "";
}
}
public static String addData(Date date,int day,String format){
try{
long s=date.getTime();
Date dt = DateUtil.addDate(new Date(s),day);
return format(dt,format);
}catch(Exception ex){
return "";
}
}
/**
* 日期减天数 求相差几天的问题
*
* @param date
* 日期
* @param date1
* 日期
* @return 返回相减后的日期
*/
public static int diffDate(Date date, Date date1) {
return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
}
public static Date parseDate(String dateStr) {
return parseDate(dateStr, "yyyy/MM/dd");
}
/**
* 取得指定月份的第一天
*
* @param strdate
* String
* @return String
*/
public static String getMonthBegin(String strdate) {
Date date = parseDate(strdate);// 注意这时候的格式 要按"yyyy/MM/dd"
return format(date, "yyyy/MM") + "/01";// 最后得到的 本来是可以任意格式的;
// 但是考虑到下一方法调用到这一方法的结果;
} // 在parseDate 转的时候就 不是"yyyy/MM/dd"这种格式就转不了
/**
* 取得指定月份的最后一天
*
* @param strdate
* String
* @return String
*/
public static String getMonthEnd(String strdate) {
Date date = parseDate(getMonthBegin(strdate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);// 加一个月
calendar.add(Calendar.DAY_OF_YEAR, -1);// 减一天
return getStringDate(calendar.getTime());
}
/**
* 获取某个时间点的所在的星期的礼拜一的日期
* 对接专用接口
*/
public static String getWeekMon(Date date,String format){
String da="";
SimpleDateFormat sdf = new SimpleDateFormat(format); // 设置时间格式
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
//System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期
cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
da = sdf.format(cal.getTime());
/*System.out.println("所在周星期一的日期:" + da);
cal.add(Calendar.DATE, 2);
String imptimeMi = sdf.format(cal.getTime());
System.out.println("所在周星期三的日期:" + imptimeMi);
cal.add(Calendar.DATE, 2);
String imptimeEnd = sdf.format(cal.getTime());
System.out.println("所在周星期五的日期:" + imptimeEnd); */
return da;
}
/**
* 根据年 月 获取对应的月份 天数
* */
public static int getDaysByYearMonth(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month - 1);
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
/**
* 返回格式化的字符串时间yyyy-MM-dd
*
* @param date
* 日期
* @return 返回字符型日期时间
*/
public static String getYmdDate() {
return format(new Date(), "yyyy-MM-dd");
}
public static void main(String[] args) {
Date date=new Date();
System.out.println(getStringDateTime(date));
date=addMinute(date, -10);
System.out.println(getStringDateTime(date));
}
}
Java日期格式处理工具类
最新推荐文章于 2023-09-13 13:18:22 发布