有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何更改我的代码,使结果基于用户输入的年份和天数?

我编写了下面的代码,根据“今天的日期”以及“提前5天”计算“两年前”的日期

我想根据相同的比较原则,制作代码的动态版本。例如,我希望用户插入年份和天数,并将其与今天的日期进行比较


代码:

public class Calendar1{
    private static void doCalendarTime() {
        System.out.print("*************************************************");
        Date now = Calendar.getInstance().getTime();
        System.out.print("  \n Calendar.getInstance().getTime() : " + now);
        System.out.println();
    }

    private static void doSimpleDateFormat() {
        System.out.print("*************************************************");
        System.out.print("\n\nSIMPLE DATE FORMAT\n");
        System.out.print("*************************************************");
        // Get today's date
        Calendar now = Calendar.getInstance();
        SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
        System.out.print(" \n It is now : " + formatter.format(now.getTime()));
        System.out.println();
    }

    private static void doAdd() {
        System.out.println("ADD / SUBTRACT CALENDAR / DATEs");
        System.out.println("=================================================================");
        // Get today's date
        Calendar now = Calendar.getInstance();
        Calendar working;
        SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
        working = (Calendar) now.clone();
        working.add(Calendar.DAY_OF_YEAR, - (365 * 2));
        System.out.println ("  Two years ago it was: " + formatter.format(working.getTime()));
        working = (Calendar) now.clone();
        working.add(Calendar.DAY_OF_YEAR, + 5);
        System.out.println("  In five days it will be: " + formatter.format(working.getTime()));
        System.out.println();
    }

    public static void main(String[] args) {
        System.out.println();
        doCalendarTime();
        doSimpleDateFormat();
        doAdd();

    }
}

共 (1) 个答案

  1. # 1 楼答案

    Java的标准日期时间API对于日期操作不是很好。如果您想对日期进行真正的计算,我建议使用Joda Time这样的库,它对于此类情况具有更好的功能


    以下是a Joda时间代码,与问题中使用的示例相同:

    DateTime now = new DateTime();
    DateTime twoYearsAgo = now.minusYears(2);
    DateTime fiveDaysFromNow = now.plusDays(5);
    
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
       .appendPattern("E yyyy.MM.dd 'at' hh:mm:ss a zzz")
       .toFormatter();
    
    System.out.println(formatter.print(twoYearsAgo));
    System.out.println(formatter.print(fiveDaysFromNow));
    

    这假设您希望使用系统的默认时区(meridian)。如果情况并非如此,则会有一个构造函数的参数来设置将要使用的时区