📄 dateb.java
字号:
/**
* 日期实用工具(Date与String转换函数)
* 做统计功能的时候, 经常要统计本周, 本月, 本季度, 本年的数据, 这就需要以某一天为基准,
* 找出这些日期的范围.
* */
package com.lianjiping.demoa;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class DateB {
public static final int YEAR = 1129 + 6;
public static final int MONTH = 1129 + 4;
public static final int DATE = 1129 + 2;
public static final int SEASON = 1129 + 5;
public static final int WEEK = 1129 + 3;
public static final int HOUR = 1129 + 1;
public static final String BEGIN = "开始";
public static final String END = "结束";
public static Map getDateRange(Date date, int range) {
Map map = new HashMap();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//week
if (range == WEEK) {
int cnt = 0;
for (; calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY; cnt++) {
calendar.add(Calendar.DATE, -1);
}
map.put(BEGIN, calendar.getTime());
calendar.add(Calendar.DATE, cnt);
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
calendar.add(Calendar.DATE, 1);
}
map.put(END, calendar.getTime());
}
//month
else if (range == MONTH) {
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
int month = calendar.get(Calendar.MONTH) + 1;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
calendar.set(Calendar.DATE, 31);
break;
case 4:
case 6:
case 9:
case 11:
calendar.set(Calendar.DATE, 30);
break;
case 2:
int year = calendar.get(Calendar.YEAR);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
calendar.set(Calendar.DATE, 29);
} else {
calendar.set(Calendar.DATE, 28);
}
break;
}
map.put(END, calendar.getTime());
}
//season
else if (range == SEASON) {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
switch (month / 3) {
//01-01 03-31
case 0:
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
calendar.set(Calendar.MONTH, 2);
calendar.set(Calendar.DATE, 31);
map.put(END, calendar.getTime());
break;
//04-01 06-30
case 1:
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
calendar.set(Calendar.MONTH, 5);
calendar.set(Calendar.DATE, 30);
map.put(END, calendar.getTime());
break;
//07-01 09-30
case 2:
calendar.set(Calendar.MONTH, 6);
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
calendar.set(Calendar.MONTH, 8);
calendar.set(Calendar.DATE, 30);
map.put(END, calendar.getTime());
break;
//10-01 12-31
case 3:
calendar.set(Calendar.MONTH, 9);
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 31);
map.put(END, calendar.getTime());
break;
}
}
//year
else if (range == YEAR) {
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 1);
map.put(BEGIN, calendar.getTime());
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 31);
map.put(END, calendar.getTime());
}
//default day
else {
map.put(BEGIN, calendar.getTime());
map.put(END, calendar.getTime());
}
//optional
setTime(map);
return map;
}
public static Map getDateRange(String ref, int range) {
if (!ref.matches("\\d{4}-\\d{1,2}-\\d{1,2}"))
return null;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.parseInt(ref.split("-")[0]));
calendar.set(Calendar.MONTH, Integer.parseInt(ref.split("-")[1]) - 1);
calendar.set(Calendar.DATE, Integer.parseInt(ref.split("-")[2]));
Date date = calendar.getTime();
return getDateRange(date, range);
}
public static String dateToStr(Date date, String format) {
SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat
.getDateInstance();
sdf.applyPattern(format);
return sdf.format(date);
}
public static String dateToStr(Date date) {
return dateToStr(date, "yyyy-MM-dd");
}
public static Date strToDate(String strDate) {
if (!strDate.matches("\\d{4}-\\d{1,2}-\\d{1,2}"))
return null;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.parseInt(strDate.split("-")[0]));
calendar.set(Calendar.MONTH,
Integer.parseInt(strDate.split("-")[1]) - 1);
calendar.set(Calendar.DATE, Integer.parseInt(strDate.split("-")[2]));
return calendar.getTime();
}
private static void setTime(Map map) {
Calendar calendar = Calendar.getInstance();
calendar.setTime((Date) map.get(BEGIN));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
map.put(BEGIN, calendar.getTime());
calendar.setTime((Date) map.get(END));
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
map.put(END, calendar.getTime());
}
public static void main(String args[]) {
System.out.println(getDateRange(new Date(), WEEK));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -