java天数计算函数(当前月天数、某月总天数、某月剩余天数)4种方法实现

缺乏、安全感 2023-10-09 23:39 94阅读 0赞

1,Java8 LocalDate

  1. public static int getDaysOfMonth(String dateStr) {
  2. LocalDate date = LocalDate.parse(dateStr + "-01");
  3. return date.lengthOfMonth();
  4. }

2,利用日历函数

  1. public static int getDaysOfMonth(String dateStr) throws ParseException {
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  3. Calendar calendar = Calendar.getInstance();
  4. calendar.setTime(sdf.parse(dateStr));
  5. return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
  6. }

3,也是利用日历函数,但是不需要 throws ParseException

  1. /**
  2. * 获取日期当月的天数
  3. * @param dateStr yyyy-MM 或者yyyy-MM-dd
  4. * */
  5. public static int getDaysByDate(String dateStr){
  6. int year= Integer.parseInt(dateStr.substring(0,4));
  7. int month=Integer.parseInt(dateStr.substring(5,7));
  8. Calendar c = Calendar.getInstance();
  9. c.set(year, month, 0);
  10. return c.get(Calendar.DAY_OF_MONTH);
  11. }

测试样例代码:

  1. String dateStr = "2023-01";
  2. int days = getDaysOfMonth(dateStr);
  3. System.out.println(dateStr + " has " + days + " days.");

4,当月剩余天数

  1. /**
  2. * 当月剩余天数
  3. * @param date 格式yyyy-MM-dd
  4. * */
  5. public static Integer monthEndNum(String date){
  6. SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
  7. Date dateTime = null;
  8. try {
  9. dateTime = format.parse(date);
  10. } catch (ParseException e) {
  11. e.printStackTrace();
  12. }
  13. Calendar c = Calendar.getInstance();
  14. c.setTime(dateTime);
  15. int today = c.get(Calendar.DAY_OF_MONTH);
  16. int last = c.getActualMaximum(Calendar.DAY_OF_MONTH);
  17. return last - today;
  18. }
  19. public static void main(String[] args) {
  20. Integer days = monthEndNum("2023-01-20");
  21. System.out.println("2023年1月剩余天数:"+days);
  22. }

5,获取当前月天数

  1. //获取当前月的天数
  2. public static int getDaysOfCurrentMonth() {
  3. Calendar calendar = Calendar.getInstance();
  4. return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
  5. }

测试代码:

  1. public static void main(String[] args) throws ParseException {
  2. Date currentTime = new Date();
  3. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4. String dateString = formatter.format(currentTime);
  5. System.out.println(dateString);
  6. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
  7. String dateString2 = dateFormat.format(currentTime);
  8. System.out.println(dateString2);
  9. Date date1 = dateFormat.parse(dateString2);
  10. String dateString3 = formatter.format(date1);
  11. System.out.println(dateString3);
  12. // 将日期字符串转换为LocalDate对象
  13. LocalDate date = LocalDate.parse("2023-04-06");
  14. // 将LocalDate对象格式化为指定格式的字符串
  15. DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy年M月d日");
  16. String formattedDate = date.format(formatter1);
  17. System.out.println(formattedDate);
  18. // 将格式化后的字符串转换为LocalDate对象
  19. LocalDate parsedDate = LocalDate.parse(formattedDate, formatter1);
  20. // 将LocalDate对象转换为指定格式的字符串
  21. String parsedDateString = parsedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  22. System.out.println(parsedDateString);
  23. // 确认两个日期字符串相等
  24. assert parsedDateString.equals("2023-04-06");
  25. // 确认两个LocalDate对象相等
  26. assert parsedDate.equals(date);
  27. System.out.println("---------------------");
  28. String sdate="2023-04-06";
  29. String sdate2="2023年4月6日";
  30. String sdate3="2023-04";
  31. String sdate4="2023年4月";
  32. System.out.println(convertDateToChs(sdate));
  33. System.out.println(convertToChinese(sdate));
  34. System.out.println((convertDateToEn(sdate2)));
  35. System.out.println((convertDateToEnglish(sdate2)));
  36. System.out.println((convertToShortChinese(sdate3)));
  37. System.out.println((convertToShortEnglish(sdate4)));
  38. String dateStr = "2023-02";
  39. int days = getDaysByDate(dateStr);
  40. System.out.println(dateStr + " has " + days + " days.");
  41. System.out.println("今年有" + getDaysInCurrentYear() + " days.");
  42. System.out.println("今年已过去" + getDaysPassedInCurrentYear() + " days.");
  43. System.out.println("今年剩余" + getDaysEndInCurrentYear() + " days.");
  44. }

测试效果截图:

27fa742545624d43ac6f622edbd6862f.png

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读

    相关 确定天数

    确定天数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^\_^ 题目描述 定义一年的第一天为一月一日,对于给