0

我正在尝试计算编号。一年中经过的天数与输入的日期匹配的年份示例:

如果用户输入 13/01/2008,它将显示自年初以来已过去 12 天

这是我的学校作业,谢谢。

到目前为止,我已经输入了日期,我想用它来计算编号。那一年过去的天数。

    public static void main(String[] args) 
    {
        final Locale defaultFormattingLocale
        = Locale.getDefault(Locale.Category.FORMAT);
        final String defaultDateFormat = DateTimeFormatterBuilder
                .getLocalizedDateTimePattern(FormatStyle.SHORT, null, 
                        IsoChronology.INSTANCE, defaultFormattingLocale);
        final DateTimeFormatter dateFormatter
        = DateTimeFormatter.ofPattern(defaultDateFormat, defaultFormattingLocale);

        Scanner inputScanner = new Scanner(System.in);

        System.out.println("Enter a date in the DD/MM/YYYY Format");
        
        String dateString = inputScanner.nextLine();
        try 
        {
            LocalDate inputDate = LocalDate.parse(dateString, dateFormatter);
            System.out.println("Date entered was " + inputDate);
        
        } catch (DateTimeParseException dtpe) 
         {
            System.out.println("Invalid date - Enter a date in the format DD/MM/YYYY");
         }
    }
}

4

2 回答 2

0

您已经在使用java.time. 所以只需执行以下操作:

String date = "13/01/2008";
LocalDate ld = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd/MM/yyyy"));

System.out.println((ld.getDayOfYear()-1) + " days have passed.");

印刷

12 days have passed.
于 2022-01-07T16:49:59.343 回答
0
public static int daysElapsed(Calendar date) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, date.get(Calendar.YEAR));
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.MONTH, 0);
    calendar.set(Calendar.HOUR, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    
    
    long diff = Math.abs(date.getTimeInMillis() - calendar.getTimeInMillis());
    
    return (int) TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
于 2022-01-07T16:47:53.113 回答