Java 基础 之 获取当前一周的所有日期/获取指定任意日期当周一星期的所有日期
目录
Java 基础 之 获取当前一周的日期/获取指定任意日期当周一星期的日期
一、简单介绍
二、实现原理
三、注意事项
四、效果实现
五、关键代码
一、简单介绍
Java 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。
本节介绍,Java 开发 中 获取当前一周一星期的日期,进而实现获取任意指定日期当周一星期的日期方法,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。
二、实现原理
1、获取当天的毫秒时间 System.currentTimeMillis() ,得到当天星期几 new SimpleDateFormat("E") ,format(toDayDate) ;
2、然后计算与周一间隔几天,进而,得到周一的毫秒时间,最后 for 循环,依次加一天的毫秒时间,进而得到 7 天的毫秒时间;
// 获取这周第一天毫秒值 long dayMillis = 24*60*60*1000; // 获取这周第一天的日子 long firstOfWeekMillis = timeMills - dayFromMonday * dayMillis; // 使用 for 循环得到当前一周的日子(7天的日子) for(long i = firstOfWeekMillis;i3、把 for 循环中把 7 天的毫秒时间,在对应转换为日期即可;
Date targetDate = new Date(i); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String targetDay = format.format(targetDate);4、同理,把指定的任意日期转为时间毫秒数,然后重复 1 — 3 步骤,从而得到指定日期的当周所有日期;
// 指定天的毫秒时间 long currentTimeMillis = getWhatDaySomeDateMillis("2019-10-15");三、注意事项
1、时间日期相关可能有更好方法吧,这里时间和日期转换方法仅供参考
2、指定的任意日期的格式为 "yyyy-MM-dd" ;
四、效果实现
1、获取当前一周的所有日期,今天是 2021-11-19 星期五,结果如下
2、获取指定任意日期当周的一星期的所有日期,指定 2019-10-15 星期二,结果如下
五、关键代码
import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class TestGetWeekDate { public static void main(String[] args) { GetCurrentWeekAllDate(); GetSomedayWeekAllDate(); } // 获取当前一周的一星期的日期 private static void GetCurrentWeekAllDate(){ // 获取当天的毫秒时间 long currentTimeMillis = System.currentTimeMillis(); Listlist = getAllWeekDayDateByMillis(currentTimeMillis); for(String date:list) { System.out.println("date : "+date); } } // 获取指定任意日期当周的一星期的日期 private static void GetSomedayWeekAllDate(){ // 指定天的毫秒时间 long currentTimeMillis = getWhatDaySomeDateMillis("2019-10-15"); List list = getAllWeekDayDateByMillis(currentTimeMillis); for(String date:list) { System.out.println("date : "+date); } } // someDataStr 格式:"yyyy-MM-dd" // 返回 时间毫秒 private static long getWhatDaySomeDateMillis(String someDataStr) { Date date= new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(someDataStr); return date.getTime(); } catch (Exception e) { e.printStackTrace(); } return -1; } // 获取指定日期毫秒时间得到 星期几 private static String getWhatDaySomeday(long timeMillis) { Date toDayDate = new Date(timeMillis); SimpleDateFormat formatE = new SimpleDateFormat("E"); String week =null; try { week = formatE.format(toDayDate); System.out.println(week); } catch (Exception e) { e.printStackTrace(); } return week; } // 根据 星期几到获取与 星期一 相差几天 private static int getHowManyDayFromMonday(String someDay) { int day = 0; switch(someDay) { case "星期一": day=0; break; case "星期二": day=1; break; case "星期三": day=2; break; case "星期四": day=3; break; case "星期五": day=4; break; case "星期六": day=5; break; case "星期日": day=6; break; default: System.out.println("不存在这样的星期几 : "+ someDay); break; } return day; } // 获取指定日期毫秒时间的当周一星期的日期 private static List getAllWeekDayDateByMillis(long timeMills){ List list = new ArrayList (); // 得到指定时间是周几 String week = getWhatDaySomeday(timeMills); System.out.println("日期是:" + week); // 记录与周一的间隔天数 int dayFromMonday=getHowManyDayFromMonday(week); System.out.println("dayFromMonday : "+ dayFromMonday); // 获取这周第一天毫秒值 long dayMillis = 24*60*60*1000; // 获取这周第一天的日子 long firstOfWeekMillis = timeMills - dayFromMonday * dayMillis; // 使用 for 循环得到当前一周的日子(7天的日子) for(long i = firstOfWeekMillis;i



