package com.mryt.cps.oms.center.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class DateUtil {
public static final SimpleDateFormat startFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
public static final SimpleDateFormat endFormat = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
public static final SimpleDateFormat formatDateYMDHHMMSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat yearAndMonthFormat = new SimpleDateFormat("yyyy-MM");
public static final SimpleDateFormat formatDateYMD = new SimpleDateFormat("yyyy-MM-dd");
/**
* 获得当天0点时间
*/
public static Date getTimesmorning() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 获得本周一0点时间
*/
public static Date getTimesWeekmorning() {
Calendar cal = Calendar.getInstance();
/** 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了*/
/*** 获得当前日期是一个星期的第几天*/
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.setFirstDayOfWeek(Calendar.MONDAY);
/** 获得当前日期是一个星期的第几天*/
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
String monday=sdf.format(cal.getTime());
try {
return sdf.parse(monday);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得本月第一天0点时间
*/
public static Date getTimesMonthmorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
/**
* 返回当天日期和本月一号
*
* @return
*/
public static Map<String, String> getNowDateAndMonthDate() {
Map<String, String> map = new HashMap<>();
Calendar cal = Calendar.getInstance();
/***获取年份*/
int year = cal.get(Calendar.YEAR);
/**获取月份*/
int month = cal.get(Calendar.MONTH) + 1;
/***获取日*/
int day = cal.get(Calendar.DATE);
String nowDate = year + "-" + month + "-" + day;
String monthStartDate = year + "-" + month + "-01";
map.put("nowDate", nowDate);
map.put("monthStartDate", monthStartDate);
/**获取上个月的当前号日期**/
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
String mon = format.format(m);
map.put("preMonthDate", mon);
/**获取上个月的当前号日期**/
return map;
}
/**
* 计算本周一日期
*
* @return
*/
public static String getMonDayDate() {
Calendar cal = Calendar.getInstance();
/** 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了*/
/*** 获得当前日期是一个星期的第几天*/
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.setFirstDayOfWeek(Calendar.MONDAY);
/** 获得当前日期是一个星期的第几天*/
int day = cal.get(Calendar.DAY_OF_WEEK);
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
String weekTimeBegin = sdf.format(cal.getTime());
return weekTimeBegin;
}
public static String todayFormatDate(Date date, SimpleDateFormat format) {
return format.format(date);
}
public static String firstDayOfMonthFormatDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return startFormat.format(calendar.getTime());
}
public static String lastDayOfMonthFormatDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return endFormat.format(calendar.getTime());
}
public static void main(String args[]) throws Exception {
Date now = new Date();
String startTime = DateUtil.firstDayOfMonthFormatDate(now);
String endTime = DateUtil.lastDayOfMonthFormatDate(now);
System.out.println("startTime = "+startTime);
System.out.println("endTime = "+endTime);
String startTime1= DateUtil.todayFormatDate(DateUtil.yearAndMonthFormat.parse("2018-10"), DateUtil.startFormat);
String endTime1 = DateUtil.todayFormatDate(DateUtil.yearAndMonthFormat.parse("2018-10"), DateUtil.endFormat);
System.out.println(getLastOfMonthDateByStr(startTime1));
// String time = "2018-9-2";
// System.out.println("time = " + firstDayOfMonthFormatDate(yearAndMonthFormat.parse(time)));
// System.out.println("time = " + lastDayOfMonthFormatDate(yearAndMonthFormat.parse(time)));
}
/**
* 根据日期返回字符串
*
* @param date
* @return
*/
public static String getStrByDate(Date date) {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (date != null) {
return sDateFormat.format(date);
}
return null;
}
public static String getLastOfMonthDateByStr(String strDate) throws Exception{
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=sDateFormat.parse(strDate);
return lastDayOfMonthFormatDate(date);
}
}