代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
calendar类常见日期处理
作者:
/ 发布于
2017/9/20
/
583
/** * 得到当前月的上一个月,返回2016-06这样的字符串 */ public static String getLastMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); String date = format.format(cal.getTime()); return date; } /** * 得到当前月的第一天,返回2016-06-01这样的字符串 * * @return */ public static String getCurrentMonthFirstDay() { Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String first = format.format(c.getTime()); return first; } public static String getCurrentMonthTheLastDay() { Calendar c = Calendar.getInstance(); c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); return dateToStr(c.getTime(), "yyyy-MM-dd"); } /** * 获取当前年的第一个月,返回2016-01这样的数据 * * @return */ public static String getCurrentYearFirstMonth() { Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR, 0); c.set(Calendar.DAY_OF_YEAR, 1); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); String first = format.format(c.getTime()); return first; } /** * 获取当前年已过的所有季度的集合(季度包含的月份未完则也算入)<String> */ public static List<String> getAllQuarterOfThisYear() { List<String> quarters = new ArrayList<String>(); Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; if (month > 9) { quarters.add(year + "-" + 1); quarters.add(year + "-" + 2); quarters.add(year + "-" + 3); quarters.add(year + "-" + 4); return quarters; } if (month > 6 && month <= 9) { quarters.add(year + "-" + 1); quarters.add(year + "-" + 2); quarters.add(year + "-" + 3); return quarters; } if (month > 3 && month <= 6) { quarters.add(year + "-" + 1); quarters.add(year + "-" + 2); return quarters; } if (month >= 1 && month <= 3) { quarters.add(year + "-" + 1); return quarters; } return null; } /** * 获取昨天 * * @return */ public static String getYesterDay() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()); return yesterday; } /** * 获取指定时间范围内的所有日期 * * @param startDate * (format="2016-06-01") * @param endDate * (format="2016-07-12") * @return * @throws ParseException */ public static List<String> getDaysBetween(String startDate, String endDate) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); List<String> result = new ArrayList<String>(); result.add(startDate); try { Calendar calBegin = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 Date begin = format.parse(startDate); calBegin.setTime(begin); Calendar calEnd = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 Date end = format.parse(endDate); calEnd.setTime(end); // 测试此日期是否在指定日期之后 while (end.after(calBegin.getTime())) { // 根据日历的规则,为给定的日历字段添加或减去指定的时间量 calBegin.add(Calendar.DAY_OF_MONTH, 1); result.add(format.format(calBegin.getTime())); } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 获取指定时间范围内的所有月份 * * @param startDate(format="2016-06") * @param endDate(format="2016-08") * @return * @throws ParseException */ public static List<String> getMonthsBetween(String startDate, String endDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); List<String> result = new ArrayList<String>(); try { Calendar calBegin = Calendar.getInstance(); Calendar calEnd = Calendar.getInstance(); calBegin.setTime(sdf.parse(startDate)); calBegin.set(calBegin.get(Calendar.YEAR), calBegin.get(Calendar.MONTH), 1); calEnd.setTime(sdf.parse(endDate)); calEnd.set(calEnd.get(Calendar.YEAR), calEnd.get(Calendar.MONTH), 2); Calendar curr = calBegin; while (curr.before(calEnd)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.MONTH, 1); } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 获取指定日期范围的所有周的周一~周日,格式为周一~周日,如2016-09-19为周一,2016-09-25为周天,返回结果为[2016-09-19 * ~2016-09-25] * * @param startDate * 起始时间(2016-09-19) * @param endDate * 结束时间(2016-09-25) * @return * @throws ParseException */ public static List<String> getWeeksBetween(String startDate, String endDate) { // startDate不能大于endDate List<String> result = new ArrayList<String>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式 try { Calendar calBegin = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 Date begin = sdf.parse(startDate); calBegin.setTime(begin); int dayWeek = calBegin.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { calBegin.add(Calendar.DAY_OF_MONTH, -1); } calBegin.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 Calendar calEnd = Calendar.getInstance(); // 使用给定的 Date 设置此 Calendar 的时间 Date end = sdf.parse(endDate); calEnd.setTime(end); // 测试此日期是否在指定日期之后 while (end.after(calBegin.getTime())) { // 根据日历的规则,为给定的日历字段添加或减去指定的时间量 calBegin.add(Calendar.DAY_OF_MONTH, 1); int day = calBegin.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 calBegin.add(Calendar.DATE, calBegin.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 // 获取周一 String monday = sdf.format(calBegin.getTime()); calBegin.add(Calendar.DATE, 6); // 获取周日 String sunday = sdf.format(calBegin.getTime()); result.add(monday + "~" + sunday); } } catch (Exception e) { e.printStackTrace(); } return result; } /** * 获取当前日期的前index天(以当前日期开始计算) index = -6表示当天日期的前7天 index = -29表示当前日期的前30天 * * @return */ public static String getLastIndexDayStr(int index) { Date now = new Date(); Calendar c = Calendar.getInstance(); c.setTime(now); c.add(Calendar.DAY_OF_MONTH, index); return dateToStr(c.getTime(), "yyyy-MM-dd"); } /** * 获取当天 */ public static String getTodayStr() { Date now = new Date(); return dateToStr(now, "yyyy-MM-dd"); } /** * 获取最近3个月开始日期(包含当前月所有月) * * @return */ public static String getLast3MonthsStartDateStr() { Date now = new Date(); Calendar c = Calendar.getInstance(); c.setTime(now); c.add(Calendar.MONTH, -2); return dateToStr(c.getTime(), "yyyy-MM") + "-01"; } /** * 获取星期几 * @param dateStr * @return */ public static String getWeekNameOfDate(String dateStr) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); try { c.setTime(format.parse(dateStr)); } catch (ParseException e) { e.printStackTrace(); } int dayForWeek = 0; if (c.get(Calendar.DAY_OF_WEEK) == 1) { dayForWeek = 7; } else { dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1; } String result = ""; switch (dayForWeek) { case 1: result = "星期一"; break; case 2: result = "星期二"; break; case 3: result = "星期三"; break; case 4: result = "星期四"; break; case 5: result = "星期五"; break; case 6: result = "星期六"; break; case 7: result = "星期天"; break; } return result; } /** * 获取指定日期所在月的第一天 * * @param date * @return yyyy-MM-dd */ public static String getMonthStartDate(String date) { try { Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); calendar.setTime(format.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return format.format(calendar.getTime()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 获取指定日期所在月的最后一天 * * @param date * @return yyyy--MM-dd */ public static String getMonthEndDate(String date) { try { Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); calendar.setTime(format.parse(date)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return format.format(calendar.getTime()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 获取指定日期所在周的周一 * @param date * @return yyyy-MM-dd */ public static String getMondayOfDate(String date) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式 Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(date)); int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day); return sdf.format(cal.getTime()); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 获取指定日期所在周的周日 * @param date * @return yyyy-MM-dd */ public static String getSundayOfDate(String date) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式 Calendar cal = Calendar.getInstance(); cal.setTime(sdf.parse(date)); int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 if (1 == dayWeek) { cal.add(Calendar.DAY_OF_MONTH, -1); } cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天 cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 cal.add(Calendar.DATE, 6); return sdf.format(cal.getTime()); } catch (ParseException e) { e.printStackTrace(); } return null; }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3