Thử thách chủ nhật của tôi là có được và duy trì ngày làm việc trong một năm cụ thể đối với tệp CSV, v.v.
Tôi có mã sau đây và vấn đề tôi gặp phải là: làm thế nào để in ngày theo một định dạng cụ thể, tức là YYYYMMDD vì mã hiện đang in một cái gì đó như Sat ngày 19 tháng 1 00:00:00 CET 2019.
Ngoài ra, nếu tôi có thể loại trừ cuối tuần và nói chung nếu có cách tốt hơn để viết mã ngắn hơn nhiều trong Java 8.
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class DatesInYear
{
public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
public static void main (String[] args) throws java.lang.Exception
{
Date dt = new Date();
System.out.println(dt);
List<Date> dates = printDates("20190101","20191231");
Collections.reverse(dates);
System.out.println(dates.size());
for(Date date:dates)
{
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
System.out.println(format1.format(date));
}
}
public static List<Date> printDates(String fromDate, String toDate)
{
ArrayList<Date> dates = new ArrayList<Date>();
try {
Calendar fromCal = Calendar.getInstance();
fromCal.setTime(dateFormat .parse(fromDate));
Calendar toCal = Calendar.getInstance();
toCal.setTime(dateFormat .parse(toDate));
while(!fromCal.after(toCal))
{
dates.add(fromCal.getTime());
fromCal.add(Calendar.DATE, 1);
}
} catch (Exception e) {
System.out.println(e);
}
return dates;
}
}
String date1 = format1.format(date);
sau đó bạn không làm gì với date1
. Nhưng bạn đang đi đúng hướng.
Calendar
cũng có thể được sử dụng để kiểm tra ngày trong tuần.
System.out.println(date)
, sử dụng cáidateFormat
mà bạn đã thực hiện để định dạng nó theo cách bạn cần.