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 楼答案
Java的标准日期时间API对于日期操作不是很好。如果您想对日期进行真正的计算,我建议使用Joda Time这样的库,它对于此类情况具有更好的功能
以下是a Joda时间代码,与问题中使用的示例相同:
这假设您希望使用系统的默认时区(meridian)。如果情况并非如此,则会有一个构造函数的参数来设置将要使用的时区