如何使用SimpleDateFormat获取指定MM-dd-yyyy格式日期的年中天数?
计算输入日期的年中天数(MM-dd-yyyy格式)
嘿,我来帮你搞定这个问题!你已经写了部分日期解析的代码,接下来只需要几步就能拿到想要的年中天数,我给你两种实现方式——一种适配你正在用的旧API,另一种是更推荐的Java 8+新日期API:
方法一:基于旧API(SimpleDateFormat + Calendar)
你现有的代码已经在做日期解析了,只需要把解析后的Date对象转成Calendar,就能直接获取年中天数,它会自动处理闰年逻辑(比如2008年的2月会按29天计算)。
完整代码示例:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class DayOfYearCalculator { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Please enter a date to view (MM-dd-yyyy):"); String dateStr = sc.next(); SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy"); try { // 解析字符串为Date对象 Date date = dateFormat.parse(dateStr); // 将Date转换为Calendar对象 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 获取年中天数 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("该日期是当年的第 " + dayOfYear + " 天"); } catch (ParseException e) { System.out.println("日期格式不正确,请输入MM-dd-yyyy格式的日期"); e.printStackTrace(); } finally { sc.close(); } } }
测试输入06-10-2008时,会输出该日期是当年的第 162 天,完全符合你的需求。
方法二:Java 8+ 新日期API(推荐)
如果你的项目用的是Java 8或更高版本,强烈建议使用java.time包下的新API——它线程安全、代码更简洁,不需要处理复杂的Calendar对象:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Scanner; public class DayOfYearCalculatorJava8 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Please enter a date to view (MM-dd-yyyy):"); String dateStr = sc.next(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy"); try { // 解析字符串为LocalDate对象 LocalDate localDate = LocalDate.parse(dateStr, formatter); // 直接获取年中天数 int dayOfYear = localDate.getDayOfYear(); System.out.println("该日期是当年的第 " + dayOfYear + " 天"); } catch (Exception e) { System.out.println("日期格式不正确,请输入MM-dd-yyyy格式的日期"); e.printStackTrace(); } finally { sc.close(); } } }
同样输入06-10-2008,会得到正确的162天结果。新API的代码逻辑更直观,也避免了旧API的线程安全隐患。
内容的提问来源于stack exchange,提问作者user9610177
相关产品推荐
相关产品推荐

