Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从用户处获取日期并将其写入URL_Java_String_Date_Parsing_Type Conversion - Fatal编程技术网

Java 从用户处获取日期并将其写入URL

Java 从用户处获取日期并将其写入URL,java,string,date,parsing,type-conversion,Java,String,Date,Parsing,Type Conversion,我想从用户那里得到开始和结束日期。目的是获取这些天之间的日期值并编辑URL 例如: 用户给了我开始日期2017年8月7日和结束日期2017年10月7日。我想为这两天之间的所有日子创建一个循环,并希望这个循环创建链接,如,等等 Date startDate; Date endDate; Scanner input=new Scanner(System.in); System.out.println("Enter the

我想从用户那里得到开始和结束日期。目的是获取这些天之间的日期值并编辑URL

例如: 用户给了我开始日期2017年8月7日和结束日期2017年10月7日。我想为这两天之间的所有日子创建一个循环,并希望这个循环创建链接,如,等等

    Date startDate;
            Date endDate;
            Scanner input=new Scanner(System.in);
            System.out.println("Enter the starting date as MM/DD/YYYY");
            String a=input.next();

              System.out.println("Enter the ending date as MM/DD/YYYY");
              String c=input.next();

             SimpleDateFormat b= new SimpleDateFormat("MM/dd/yyyy");
             startDate= b.parse(a);

             endDate= b.parse(c);

            SimpleDateFormat d= new SimpleDateFormat("yyyyMM");

             String startDaate= d.format(startDate);

SimpleDateFormat e= new SimpleDateFormat("ddMMyyyy");
         String startDaate2= e.format(startDate);



System.out.println(startDate);
System.out.println(endDate);
        System.out.println(startDaate);
        System.out.println(startDaate2);
我尝试了这个没有循环的开始日期。我得到

2014年6月8日星期日00:00:00

2018年7月21日星期六00:00:00

062014和08062014

当我将日期转换为字符串时,循环的版本如下

String s1="www.tcmb.gov.tr/kurlar/"+startDaate+"/"+startDaate2+".xml"; 
循环将把firstDate1值(YYYYMM)和firstDate2值(DDMMYYYY)转发到下一天或下一个月。因此,我需要转发起始日期
日期值到第二天。

使用
java.time

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

        ...

        String sDate;
        String eDate;

        try (Scanner scan = new Scanner(System.in)) {
           System.out.print("Enter first Date (dd/MM/yyyy): ");
           sDate = scan.nextLine();
           System.out.print("Enter second Date (dd/MM/yyyy): ");
           eDate = scan.nextLine();

        }

        DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy");

        LocalDate dateStart = LocalDate.from(format.parse(sDate));
        LocalDate dateEnd = LocalDate.from(format.parse(eDate));
        while (!dateStart.isAfter(dateEnd)) {
            System.out.println(dateStart);
            dateStart = dateStart.plusDays(1);
        }
或者,您也可以使用api:

因此,我更新了我的答案如下:

String sDate = "07/08/2017";
String eDate = "07/10/2017";

DateTimeFormatter format1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("ddMMyyyy");
DateTimeFormatter format3 = DateTimeFormatter.ofPattern("yyyyMM");

LocalDate dateStart = LocalDate.from(LocalDate.parse(sDate, format1).withDayOfMonth(1)); // just getting the month and year from user input and start with first day of given month
LocalDate dateEnd = LocalDate.from(format1.parse(eDate));
while (!dateStart.isAfter(dateEnd)) {
    System.out.println("date1 : "+dateStart.format(format3) + " - date2: " + dateStart.format(format2));
    dateStart = dateStart.plusDays(1);
}
输出:

date1 : 201708 - date2: 01082017
date1 : 201708 - date2: 02082017
date1 : 201708 - date2: 03082017
date1 : 201708 - date2: 04082017
date1 : 201708 - date2: 05082017
date1 : 201708 - date2: 06082017

....

希望这能解决你的问题。

你试过什么吗??与我们分享。我更新了我的答案。希望它能帮助你,这就是我需要的。谢谢
String sDate = "07/08/2017";
String eDate = "07/10/2017";

DateTimeFormatter format1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("ddMMyyyy");
DateTimeFormatter format3 = DateTimeFormatter.ofPattern("yyyyMM");

LocalDate dateStart = LocalDate.from(LocalDate.parse(sDate, format1).withDayOfMonth(1)); // just getting the month and year from user input and start with first day of given month
LocalDate dateEnd = LocalDate.from(format1.parse(eDate));
while (!dateStart.isAfter(dateEnd)) {
    System.out.println("date1 : "+dateStart.format(format3) + " - date2: " + dateStart.format(format2));
    dateStart = dateStart.plusDays(1);
}
date1 : 201708 - date2: 01082017
date1 : 201708 - date2: 02082017
date1 : 201708 - date2: 03082017
date1 : 201708 - date2: 04082017
date1 : 201708 - date2: 05082017
date1 : 201708 - date2: 06082017

....