Java字符串到日期转换以打印1年的日期
代码 我必须从sDate1字符串开始获取过去一年的所有日期。 这是代码没有任何进展,但现在只是添加了它,希望有人可以帮助。有字符串到LocalDateTime,日期到LocalDateTime的错误,我无法解决,它被卡住了Java字符串到日期转换以打印1年的日期,java,datetime,Java,Datetime,代码 我必须从sDate1字符串开始获取过去一年的所有日期。 这是代码没有任何进展,但现在只是添加了它,希望有人可以帮助。有字符串到LocalDateTime,日期到LocalDateTime的错误,我无法解决,它被卡住了 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd"); String Date = "20181120"; Date date1=new SimpleDateFormat("yyyyMMdd").p
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
String Date = "20181120";
Date date1=new SimpleDateFormat("yyyyMMdd").parse(sDate1);
LocalDateTime start =LocalDateTime.now();
LocalDateTime end = start.minusYears (1);
List<String> First = new ArrayList<>();
List<String> Second = new ArrayList<>();
List<String> Third = new ArrayList<>();
while (!end.isAfter(start)) {
First.add(dtf.format(end)+"_*_A.dat");
Second.add(dtf.format(end)+"_*_B.dat");
Third.add(dtf.format(end)+"_*_C.dat");
end = end.plusDays(1);
}
DateTimeFormatter dtf=DateTimeFormatter.of模式(“yyyyMMdd”);
字符串日期=“20181120”;
Date date1=新的SimpleDataFormat(“yyyyymmdd”).parse(sDate1);
LocalDateTime start=LocalDateTime.now();
LocalDateTime end=start.minus年(1);
List First=new ArrayList();
第二个列表=新的ArrayList();
第三个列表=新的ArrayList();
而(!end.isAfter(start)){
添加(dtf.format(end)+“*_A.dat”);
添加(dtf.format(end)+“*_B.dat”);
第三,添加(dtf.format(end)+“*_C.dat”);
结束=结束多个星期(1);
}
不确定我是否理解您的具体任务。但我要写的是:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
String sDate1 = "20181120";
LocalDate date1= LocalDate.parse(sDate1, dtf);
LocalDate start = LocalDate.now();
LocalDate end = start.plusYears(1);
ArrayList<String> first = new ArrayList<>();
ArrayList<String> second = new ArrayList<>();
ArrayList<String> third = new ArrayList<>();
while (!start.isAfter(end)) {
first.add(dtf.format(start)+"_*_A.dat");
second.add(dtf.format(start)+"_*_B.dat");
third.add(dtf.format(start)+"_*_C.dat");
start = start.plusDays(1);
}
DateTimeFormatter dtf=DateTimeFormatter.of模式(“yyyyMMdd”);
字符串sDate1=“20181120”;
LocalDate date1=LocalDate.parse(sDate1,dtf);
LocalDate start=LocalDate.now();
LocalDate end=start.plusYears(1);
ArrayList first=新的ArrayList();
ArrayList second=新的ArrayList();
ArrayList third=新的ArrayList();
而(!start.isAfter(end)){
首先,添加(dtf.format(start)+“*_A.dat”);
添加(dtf.format(start)+“*_B.dat”);
第三,添加(dtf.format(start)+“*_C.dat”);
开始=开始。多个星期(1);
}
不确定我是否理解您的具体任务。但我要写的是:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
String sDate1 = "20181120";
LocalDate date1= LocalDate.parse(sDate1, dtf);
LocalDate start = LocalDate.now();
LocalDate end = start.plusYears(1);
ArrayList<String> first = new ArrayList<>();
ArrayList<String> second = new ArrayList<>();
ArrayList<String> third = new ArrayList<>();
while (!start.isAfter(end)) {
first.add(dtf.format(start)+"_*_A.dat");
second.add(dtf.format(start)+"_*_B.dat");
third.add(dtf.format(start)+"_*_C.dat");
start = start.plusDays(1);
}
DateTimeFormatter dtf=DateTimeFormatter.of模式(“yyyyMMdd”);
字符串sDate1=“20181120”;
LocalDate date1=LocalDate.parse(sDate1,dtf);
LocalDate start=LocalDate.now();
LocalDate end=start.plusYears(1);
ArrayList first=新的ArrayList();
ArrayList second=新的ArrayList();
ArrayList third=新的ArrayList();
而(!start.isAfter(end)){
首先,添加(dtf.format(start)+“*_A.dat”);
添加(dtf.format(start)+“*_B.dat”);
第三,添加(dtf.format(start)+“*_C.dat”);
开始=开始。多个星期(1);
}
Stream
添加了生成一组对象的方法
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
Stream< LocalDate > stream = today.minusYears( 1 ).datesUntil( today ) ;
2017-12-01
2017-12-02
2017-12-03
有关流的更多信息,请参阅和文章,以及。Stream
添加了生成一组对象的方法
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
Stream< LocalDate > stream = today.minusYears( 1 ).datesUntil( today ) ;
2017-12-01
2017-12-02
2017-12-03
有关流的更多信息,请参阅和文章,以及
- 您需要解析日期字符串以获取开始日期。然而,没有理由为此引入麻烦且过时的
。time提供了我们需要的所有功能SimpleDateFormat
- 因为我们只需要一个日期,而不是一天中的时间,所以也没有理由使用
LocalDateTime
- 您可能仍然打算在
、A
和B
的前面放置C
\u*\ ucode>,但您可以自己修复
List first=date1.datesUntil(end.plusDays(1))
.map(d->d.format(dtf)+“*\u A.dat”)
.collect(Collectors.toList());
在本例中,我建议为这三个列表使用三个单独的流管道。由于datesUntil
方法接受独占的结束日期,并且您希望包含您的结束日期,因此我们需要添加1天
- 您需要解析日期字符串以获取开始日期。然而,没有理由为此引入麻烦且过时的
。time提供了我们需要的所有功能SimpleDateFormat
- 因为我们只需要一个日期,而不是一天中的时间,所以也没有理由使用
LocalDateTime
- 您可能仍然打算在
、A
和B
的前面放置C
\u*\ ucode>,但您可以自己修复
List first=date1.datesUntil(end.plusDays(1))
.map(d->d.format(dtf)+“*\u A.dat”)
.collect(Collectors.toList());
在本例中,我建议为这三个列表使用三个单独的流管道。由于
datesUntil
方法接受独占的结束日期,并且您希望包含您的结束日期,因此我们需要添加1天。DateTimeFormatter dtf=DateTimeFormatter.ofPattern(“yyyyymmdd”);字符串sDate1=“20181120”;LocalDate date1=LocalDate.parse(sDate1,dtf);LocalDate end=date1.plusYears(1);ArrayList first=新的ArrayList();ArrayList second=新的ArrayList();ArrayList third=新的ArrayList();虽然(!date1.isAfter(end)){first.add(dtf.format(date1)+“*_A.dat”);second.add(dtf.format(date1)+“_B.dat”);third.add(dtf.format(date1)+“u C.dat”);date1=date1.plusDays(1)}我使用了localdatetime,这导致了问题,感谢您的帮助。如果需要,您可以编辑您的答案。@th0rben,感谢您提供对提问者有帮助的答案。然而,为了对其他读者也有帮助(甚至对提问者更有帮助),我建议添加关于如何解决问题的解释。DateTimeFormatter dtf=DateTimeFormatter.of模式(“yyyyMMdd”);字符串sDate1=“20181120”;LocalDate date1=LocalDate.parse(sDate
20181120*_A.dat
20181121*_A.dat
20181122*_A.dat
20181123*_A.dat
…
20191118*_A.dat
20191119*_A.dat
20191120*_A.dat
List<String> first = date1.datesUntil(end.plusDays(1))
.map(d -> d.format(dtf) + "_*_A.dat")
.collect(Collectors.toList());