本文将从输入、数据类型、日期转换、计算天数四个方面阐述如何使用Java计算指定日子与今天的天数,给出完整的代码实例。
一、输入
Java中获取用户输入可以通过Scanner类实现。下面示例创建一个Scanner对象读取用户输入年月日。
import java.util.Scanner; public class CalculateDays { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入年: "); int year = input.nextInt(); System.out.print("请输入月: "); int month = input.nextInt(); System.out.print("请输入日: "); int day = input.nextInt(); input.close(); } }
二、数据类型
年月日是我们常规使用的日期表示方式,但Java中处理日期会用到更多的数据类型。其中,我们可以使用Calendar和Date类。
Calendar是一个抽象类,提供了很多关于日期、时间、时间段的方法。下面是使用Calendar获取指定日期方法的示例。
import java.util.Calendar; public class CalculateDays { public static void main(String[] args) { // 获取日历实例 Calendar calendar = Calendar.getInstance(); // 设置日期 calendar.set(2022, 3 - 1, 7); // 获取年月日: int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); } }
Date是一个表示时间戳的类。使用Date类的getTime方法可以获取相对应的毫秒数,方便进行日期计算。
三、日期转换
在Java中,处理日期时往往需要进行不同数据类型之间的转换。下面给出三种类型转换示例。
1. Calendar转Date
import java.util.Calendar; import java.util.Date; public class CalculateDays { public static void main(String[] args) { // 获取日历实例 Calendar calendar = Calendar.getInstance(); // 设置日期 calendar.set(2022, 3 - 1, 7); // Calendar转Date Date date = calendar.getTime(); } }
2. Date转Calendar
import java.util.Calendar; import java.util.Date; public class CalculateDays { public static void main(String[] args) { // 获取当前日期时间 Date date = new Date(); // Date转Calendar Calendar calendar = Calendar.getInstance(); calendar.setTime(date); } }
3. 字符串转Date
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CalculateDays { public static void main(String[] args) throws ParseException { // 时间格式 String pattern = "yyyy-MM-dd"; String stringDate = "2022-03-07"; // 字符串转Date SimpleDateFormat format = new SimpleDateFormat(pattern); Date date = format.parse(stringDate); } }
四、计算天数
Java提供了两个类,Date类和Calendar类都提供了计算日期时间差的方法。下面的示例使用Calendar类的方法来计算输入日期和今天的天数。
import java.util.Calendar; import java.util.Scanner; public class CalculateDays { public static void main(String[] args) { // 获取当前日期 Calendar calendarToday = Calendar.getInstance(); // 获取用户输入的日期 Scanner input = new Scanner(System.in); System.out.print("请输入年: "); int year = input.nextInt(); System.out.print("请输入月: "); int month = input.nextInt(); System.out.print("请输入日: "); int day = input.nextInt(); input.close(); // 设置日期 Calendar calendarInput = Calendar.getInstance(); calendarInput.set(year, month - 1, day); // 获取两个日期的毫秒差值 long diffTime = calendarToday.getTimeInMillis() - calendarInput.getTimeInMillis(); // 每天的毫秒数 long diffDays = diffTime / (1000 * 60 * 60 * 24); System.out.println("距离输入的日期过去了 " + diffDays + "天"); } }