java写的日期工具,根据设置日期获取指定的一周或者一个月的所有日期
来源:互联网 发布:java软件如何下载? 编辑:程序博客网 时间:2024/05/22 15:25
在做项目中遇到一个关于日记的问题,国外算一周是从周末到周六,而国内一周是从周一到周天。很多软件需要获取一个月或者一周的所有日期来进行数据统计,为了方便大家开发,避免重复劳动。特地写了一个DateTools工具类,使用方法都在main函数里。
输出结果如下:
需要使用的同学
import java.text.Format;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public class DateTools { public static void main(String[] args) { System.out.println("--------------当前日期下一周的每一天--------------"); List<String> lst= getALlweekDays();//获取当前日期下,一周的每一天 for(String s:lst) { System.out.println(s); } List <String>lst2=getAllDaysMonth();//获取当前日期下,一个月的每一天 System.out.println("--------------一个月的每一天--------------"); for(String s2:lst2) { System.out.println(s2); } System.out.println("--------------根据特定的日期‘2014-8-1’获取特定日期所在一周的每一天--------------"); Date d=DateTools.paraseStringToDate("2014-8-1"); List <String>lst3=DateTools.getAllweekDays(d); for(String s3:lst3) { System.out.println(s3); } System.out.println("--------------根据特定的日期‘2014-8-1’获取特定日期所在一个月的每一天--------------"); Date d2=DateTools.paraseStringToDate("2014-8-1"); List <String>lst4=DateTools.getAllDaysMonthByDate(d2); for(String s3:lst4) { System.out.println(s3); } } private static final int FIRST_DAY = Calendar.MONDAY; private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); public String getMonthStart()//获取月初日期 { Date d = new Date(); // 月初 // System.out.println("月初" + sdf.format(getMonthStart(d))); return sdf.format(getMonthStart(d)); } public static String getMonthStartStr(Date d)//根据传入日期来获取一个月的开始时间 { return sdf.format(getMonthStart(d)); } public static String getMonthEndStr(Date d)//根据传入时间获取一个月月末时间 { return sdf.format(getMonthEnd(d)); } public static List<String>getAllDaysMonthByDate(Date d)//根据传入的日期获取所在月份所有日期 { List<String> lst=new ArrayList(); Date date = getMonthStart(d); Date monthEnd = getMonthEnd(d); while (!date.after(monthEnd)) { //System.out.println(sdf.format(date)); lst.add(sdf.format(date)); date = getNext(date); } return lst; } public static Date paraseStringToDate(String timestr )//将字符串转化为日期 { Date date=null; Format f = new SimpleDateFormat("yyyy-MM-dd"); try {date = (Date) f.parseObject(timestr);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} return date; } public String getMonthEnd()//获取月末日期 { Date d = new Date(); return sdf.format(getMonthEnd(d)); } public static List<String>getAllDaysMonth() { List<String> lst=new ArrayList(); Date d = new Date(); // 月初 // System.out.println("月初" + sdf.format(getMonthStart(d))); // 月末 //System.out.println("月末" + sdf.format(getMonthEnd(d))); Date date = getMonthStart(d); Date monthEnd = getMonthEnd(d); while (!date.after(monthEnd)) { //System.out.println(sdf.format(date)); lst.add(sdf.format(date)); date = getNext(date); } return lst; } private static Date getMonthStart(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int index = calendar.get(Calendar.DAY_OF_MONTH); calendar.add(Calendar.DATE, (1 - index)); return calendar.getTime(); } private static Date getMonthEnd(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, 1); int index = calendar.get(Calendar.DAY_OF_MONTH); calendar.add(Calendar.DATE, (-index)); return calendar.getTime(); } private static Date getNext(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, 1); return calendar.getTime(); } public static String getWeekStartDay(Date d) {//根据日期来获取一周的第一天Calendar c = Calendar.getInstance(); List <String>lst=new ArrayList();c.setTime(d);setToFirstDay(c);for (int i = 0; i < 7; i++) {String day = printDay(c);lst.add(day);c.add(Calendar.DATE, 1);}return lst.get(0);} public static String getWeekEndtDay(Date d) {//根据日期来获取一周的最后一天Calendar c = Calendar.getInstance(); List <String>lst=new ArrayList();c.setTime(d);setToFirstDay(c);for (int i = 0; i < 7; i++) {String day = printDay(c);lst.add(day);c.add(Calendar.DATE, 1);}return lst.get(6);}public static List<String> getAllweekDays(Date d) {//根据日期来获取其所在周的每一天Calendar c = Calendar.getInstance(); List <String>lst=new ArrayList();c.setTime(d);setToFirstDay(c);for (int i = 0; i < 7; i++) {String day = printDay(c);lst.add(day);c.add(Calendar.DATE, 1);}return lst;} public static List<String> getALlweekDays() { List<String>lst=new ArrayList(); Calendar calendar = Calendar.getInstance(); setToFirstDay(calendar); for (int i = 0; i < 7; i++) { String day=printDay(calendar); lst.add(day); calendar.add(Calendar.DATE, 1); } return lst; } private static void setToFirstDay(Calendar calendar) { while (calendar.get(Calendar.DAY_OF_WEEK) != FIRST_DAY) { calendar.add(Calendar.DATE, -1); } } private static String printDay(Calendar calendar) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); return dateFormat.format(calendar.getTime()); } }
,直接拷贝即可。
1 0
- java写的日期工具,根据设置日期获取指定的一周或者一个月的所有日期
- JS获取指定日期的前一天,一周,一个月
- IOS 根据日期,获取该日期所在周,月,年的开始日期,结束日期 的方法,还有下一周或者上一周的时间
- Oracle 获取一个月的所有日期
- java 获取当前日期的前一个月的日期
- Java各种日期格式的获取和设置指定日期
- java获取指定日期的前后日期
- C#获取指定月指定周的日期范围 根据当前时间获取本月开始日期和结束日期
- C#获取指定月指定周的日期范围 根据当前时间获取本月开始日期和结束日期
- C#获取指定月指定周的日期范围 根据当前时间获取本月开始日期和结束日期
- Oracle获取一周前,一个月前,一年前的日期
- Oracle获取一周前,一个月前,一年前的日期
- java获取一个月前的日期
- 根据某个日期得到该月的所有日期
- js得到连两个时间段之间所有的年-月 获取当前日期 格式化日期 根据指定日期得到该日期该月份的最后一天
- Java根据当前日期获得这一周的日期
- Java根据当前日期获得这一周的日期
- Java根据当前日期获得这一周的日期
- 【HTML】空格
- Mysql 主从复制-原理篇
- Java基础总结
- 条款46:需要类型转换时请为模板定义非成员函数
- 导航控制器 界面的跳转
- java写的日期工具,根据设置日期获取指定的一周或者一个月的所有日期
- CUDA中Bank conflict冲突
- #9 LeetCode——Palindrome Number
- 用python爬虫抓取知乎图片
- 《php和mysql web开发》笔记——第1章PHP快速入门
- 关于数据库一些名词的直观解释记录
- JavaScript高级程序设计之函数表达式之递归第7.1讲笔记
- php count()函数与sizeof()函数之问?
- mysql如何导入excel数据