package com.iss.ecommerce.countAnalysis.util;
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 DateUtils {
/**
* 获取本周开始时间
*
* @return
*/
public String getMondayOFWeek() {
String weekDayStart = "";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;
c.add(Calendar.DATE, -weekday);
weekDayStart = sdf.format(c.getTime()) + " 00:00:00";
} catch (Exception e) {
e.printStackTrace();
}
return weekDayStart;
}
/**
* 获取当月第一天
*
* @return
*/
public String getFirstDayOfMonth() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
str = sdf.format(lastDate.getTime());
str = str + " 00:00:00";
return str;
}
/**
* 当前季度的开始时间,即2012-01-1 00:00:00
*
* @return
*/
public String getCurrentQuarterStartTime() {
String quarterStartTime = "";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int currentMonth = c.get(Calendar.MONTH) + 1;
try {
if (currentMonth >= 1 && currentMonth <= 3)
c.set(Calendar.MONTH, 0);
else if (currentMonth >= 4 && currentMonth <= 6)
c.set(Calendar.MONTH, 3);
else if (currentMonth >= 7 && currentMonth <= 9)
c.set(Calendar.MONTH, 4);
else if (currentMonth >= 10 && currentMonth <= 12)
c.set(Calendar.MONTH, 9);
c.set(Calendar.DATE, 1);
quarterStartTime = sdf.format(c.getTime()) + " 00:00:00";
} catch (Exception e) {
e.printStackTrace();
}
return quarterStartTime;
}
/**
* 获得本年第一天的日期
*
* @return
*/
public String getCurrentYearFirst() {
String currentYearStartTime = "";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
;
try {
c.set(Calendar.MONTH, 0);
c.set(Calendar.DATE, 1);
currentYearStartTime = sdf.format(c.getTime()) + " 00:00:00";
} catch (Exception e) {
e.printStackTrace();
}
return currentYearStartTime;
}
/**
* 获取当天开始时时间
*
* @return
*/
public String getNowdayTime() {
String re_time = "";
Date date = new Date();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
String currentdata = f.format(date);
re_time = currentdata + " 00:00:00";
return re_time;
}
/**
* 获取当天此时时间
*
* @return
*/
public String getNowTime() {
String re_time = "";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date currentTime = new Date();// 得到当前系统时间
re_time = formatter.format(currentTime); // 将日期时间格式化
return re_time;
}
/**
* 获取当年
* @return
*/
public String getCurrentYear(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
Date currentTime = new Date();// 得到当前系统时间
return formatter.format(currentTime);
}
/**
* 获取今年第一个月份
* @return
*/
public String getCurrentFirstMonth(){
return getCurrentYear() + "-01";
}
/**
* 获取当月
* @return
*/
public String getCurrentMonth(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
Date currentTime = new Date();// 得到当前系统时间
return formatter.format(currentTime);
}
/**
* 近i个月的开始时间
* @param i
* @return
*/
public static String getStartMonth(int i){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -i + 1);
return sdf.format(calendar.getTime());
}
/**
* 根据日期获取对应的年值、月值
* @param date
* @return
*/
public static Map<String, Integer> getPerNum(String date){
Map<String, Integer> data = new HashMap<String, Integer>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date2 = null;
try {
date2 = sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
if(null != date2){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date2);
data.put("year", calendar.get(Calendar.YEAR));
data.put("month", calendar.get(Calendar.MONTH) + 1);
}
return data;
}
/**
* 月差
* @param startDate
* @param endDate
* @return
*/
public static int getMonthIndex(String startDate, String endDate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date1 = null;
Date date2 = null;
try {
date1 = sdf.parse(startDate);
date2 = sdf.parse(endDate);
} catch (ParseException e) {
e.printStackTrace();
}
if(null != date1 && null != date2){
return getMonth(date1, date2);
}
return 0;
}
/**
* 二个日期月差
* @param start
* @param end
* @return
*/
public static int getMonth(Date start, Date end) {
if (start.after(end)) {
Date t = start;
start = end;
end = t;
}
Calendar startCalendar = Calendar.getInstance();
startCalendar.setTime(start);
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(end);
Calendar temp = Calendar.getInstance();
temp.setTime(end);
temp.add(Calendar.DATE, 1);
int year = endCalendar.get(Calendar.YEAR)
- startCalendar.get(Calendar.YEAR);
int month = endCalendar.get(Calendar.MONTH)
- startCalendar.get(Calendar.MONTH);
if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month + 1;
} else if ((startCalendar.get(Calendar.DATE) != 1)
&& (temp.get(Calendar.DATE) == 1)) {
return year * 12 + month;
} else if ((startCalendar.get(Calendar.DATE) == 1)
&& (temp.get(Calendar.DATE) != 1)) {
return year * 12 + month;
} else {
return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
}
}
/**
* 获取开始日期,yyyy-MM加上index个月后的日期
* @param start
* @param index
* @return
*/
public static String getDate(String start, int index){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = null;
try {
date = sdf.parse(start);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, index);
return sdf.format(calendar.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
DateUtils dateUtils = new DateUtils();
System.out
.println("=======================今天==============================");
System.out.println(dateUtils.getNowdayTime());
System.out.println(dateUtils.getNowTime());
System.out
.println("=======================本周==============================");
String date = dateUtils.getMondayOFWeek();
System.out.println(date);
String cureentString = dateUtils.getNowTime();
System.out.println(cureentString);
System.out
.println("=======================本月==============================");
System.out.println(dateUtils.getFirstDayOfMonth());
System.out.println(dateUtils.getNowTime());
System.out
.println("==========================本季度===========================");
System.out.println(dateUtils.getCurrentQuarterStartTime());
System.out.println(dateUtils.getNowTime());
System.out
.println("==========================今年==========================");
System.out.println(dateUtils.getCurrentYearFirst());
System.out.println(dateUtils.getNowTime());
System.out.println(dateUtils.getCurrentYear());
System.out.println(dateUtils.getCurrentMonth());
System.out.println(getMonthIndex("2013-08","2014-06"));
System.out.println(getDate("2013-08", 5));
System.out.println(getStartMonth(5));
}
}