java java时间和Calendar 类的相关用法
2019-08-11 本文已影响0人
hlchengzi
时间的相关操作:
String -> Date
java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String s= "2011-07-09 ";
Date date = formatter.parse(s);
Date->String
java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String date = formatter.format(new Date());//格式化数据
将时间转换为时间戳
public static String dateToStamp(String s) throws ParseException{
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(s);
long ts = date.getTime();
res = String.valueOf(ts);
return res;
}
将时间戳转换为时间
public static String stampToDate(String s){
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long lt = new Long(s);
Date date = new Date(lt);
res = simpleDateFormat.format(date);
return res;
}
获取一段时间里面的月份,月开始和月结束的获取方法
/**
*
* @param startTime
* @param endTime
* @return
*/
public static Map<String,String> getMonths(String startTime, String endTime) throws ParseException {
Map<String,String> map = new HashMap<>(8);
Calendar cal = new GregorianCalendar();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
cal.setTime(simpleDateFormat.parse(endTime));
int endMonth = cal.get(Calendar.MONTH);
int endYear = cal.getWeekYear();
Date startDate=simpleDateFormat.parse(startTime);
cal.setTime(startDate);
while(cal.get(Calendar.MONTH)<=endMonth || cal.getWeekYear()<endYear){
Date date = new Date(cal.getTimeInMillis());
String s1 = simpleDateFormat.format(getFirstDayOfMonth(date));
String s2 = simpleDateFormat.format(getLastDayOfMonth(date));
map.put(s1,s2);
cal.add(Calendar.MONTH,1);
}
return map;
}
/**
* 获取指定时间的当月第一天
* @param date
* @return
*/
public static Date getFirstDayOfMonth(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
// 获取某月最小天数
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
// 设置日历中月份的最小天数
cal.set(Calendar.DAY_OF_MONTH, firstDay);
// 格式化日期
return cal.getTime();
}
/**
* 获得指定时间当月最后一天
*
* @return
*/
public static Date getLastDayOfMonth(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
// 获取某月最小天数
int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
// 获取某月最大天数
int month = cal.get(Calendar.MONTH)+1;
int lastDay;
//2月的平年瑞年天数
if(month==2) {
lastDay = cal.getLeastMaximum(Calendar.DAY_OF_MONTH);
}else {
lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
// 设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
return cal.getTime();
}
获取指定时间的周开始和周结束,一段时间里面的周
public static Map<String,String> getWeeks(String startTime, String endTime) throws ParseException {
Map<String,String> map = new HashMap<>(8);
Calendar cal = new GregorianCalendar();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(7);
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
cal.setTime(simpleDateFormat.parse(endTime));
int endWeek = cal.get(Calendar.WEEK_OF_YEAR);
int endYear = cal.getWeekYear();
Date startDate=simpleDateFormat.parse(startTime);
cal.setTime(startDate);
while(cal.get(Calendar.WEEK_OF_YEAR)<=endWeek || cal.getWeekYear()<endYear){
Date date = new Date(cal.getTimeInMillis());
String s1 = simpleDateFormat.format(getFirstDayOfWeek(date));
String s2 = simpleDateFormat.format(getLastDayOfWeek(date));
map.put(s1,s2);
cal.add(Calendar.WEEK_OF_YEAR,1);
}
return map;
}
public static void main(String args[]) throws ParseException {
/**
* 月份是以0开始的
*/
Map<String,String> map1 = getMonths("2019-02-04","2019-08-11");
Map<String,String> map = getWeeks("2019-08-04","2019-08-11");
}
/**
* 获取指定日期的第后一天
* @param date
* @return
*/
public static Date getFirstDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
return c.getTime ();
}
/**
* 获取指定日期的第一天
* @param date
* @return
*/
public static int getWeekOfYear(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime (date);
return c.get(Calendar.WEEK_OF_YEAR);
}
/**
* 取得指定日期所在周的最后一天
*
* @param date
* @return
*/
public static Date getLastDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
return c.getTime();
}