一个很好理解的工具类,还没进行过优化,就是提供一个思路,话不多说先贴代码吧。
import java.text.SimpleDateFormat;
import java.util.*;
public class DateToWeek {
public static void main(String[] args) {
//用来Date转String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//用来String转Date,因为String格式原因所以分开写
SimpleDateFormat sf = new SimpleDateFormat("EEE MMM d HH:mm:ss Z yyyy", Locale.UK);
Date currentDate = new Date();
List<Date> days = dateToWeek(currentDate);
//System.out.println("今天的日期:"+sdf.format(currentDate));
for(Date dd:days){
System.out.println(dd);
}
//这里取出开始时间与结束时间
String sdate = days.subList(0,1).toString();
String edate = days.subList(6,7).toString();
//做一下字符串切割,因为取出的结果被中括号包括着我们将两头的[]切掉
sdate = sdate.substring(1,sdate.length()-1);
edate = edate.substring(1,edate.length()-1);
//将取出的开始时间与结束时间转成我们要的String格式
try{
Date startTimeDate = sf.parse(sdate);
String startTimeString = sdf.format(startTimeDate);
Date endTimeDate = sf.parse(edate);
String endTimeString = sdf.format(endTimeDate);
System.out.println("今天是:"+sdf.format(currentDate));
System.out.println("本周的开始时间是:"+startTimeString+","+"本周的结束时间是:"+endTimeString);
}catch (Exception e){
e.printStackTrace();
}
}
@SuppressWarnings("deprecation")
public static List<Date> dateToWeek(Date mdate) {
int b = mdate.getDay();
Date fdate;
List<Date> list = new ArrayList<Date>();
Long fTime = mdate.getTime() - b * 24 * 3600000;
for (int i = 1; i <= 7; i++) {
fdate = new Date();
fdate.setTime(fTime + (i * 24 * 3600000));
list.add(i - 1, fdate);
}
return list;
}
}
其中写了两个时间格式转化格式,为了转换两种时间格式,想要Date类型的结果就不用写转String那段了。
运行结果:
才学疏浅,代码可能写得有点烂,还望大佬们多多指点,共同学习。
By -- 2021--08--23--