解决 java.text.ParseException: Unparseable date

简介: 解决 java.text.ParseException: Unparseable date

想根据指定字符串日期,获取是第几周,结果报错了

java.text.ParseException: Unparseable date: "2023-03-07"
  at java.text.DateFormat.parse(DateFormat.java:366)
  at com.hidata.hidbm.Test11.getWeeksInMonthOfDate(Test11.java:27)
  at com.hidata.hidbm.Test11.main(Test11.java:14)
2023年3月第2周
Process finished with exit code 0

经过查找,发现是因为SimpleDateFormat里面忘记加 “yyyy-MM-dd”,

原来的

SimpleDateFormat df=new SimpleDateFormat();

改过后

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

最终代码

package com.hidata.hidbm;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
 * @Description :
 * @Date: 2023-03-07 10:05
 */
public class Demo{
    public static void main(String[] args) {
        System.out.println(getWeeks("2023-03-07"));
    }
    /**
     * 获取指定日期-XXXX年X月第X周
     */
    public static String getWeeks(String dateStr){
        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        try {
            calendar.setTime(df.parse(dateStr));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //设置每周第一天为周一 默认每周第一天为周日
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        //获取当前日期所在周周日
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
        return String.valueOf(calendar.get(Calendar.YEAR)).concat("年").
                concat(String.valueOf(calendar.get(Calendar.MONTH)+1)).concat("月第").
                concat(String.valueOf(calendar.get(Calendar.WEEK_OF_MONTH))).concat("周");
    }
}


相关文章
|
7月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
77 0
|
7月前
|
Java
关于java获取时间 new Date(),显示“上午、下午”
关于java获取时间 new Date(),显示“上午、下午”
105 0
|
3月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
2月前
|
Java
Java的Date类使用
Java的Date类使用
29 0
|
3月前
|
Java API
java date 增加10s后的时间
在 Java 中,要将 `Date` 对象增加 10 秒,可以通过 `Calendar` 类(适用于 Java 8 之前)或 `java.time` 包中的 `LocalDateTime`、`ZonedDateTime` 和 `Instant` 类(Java 8 及以上)实现。使用 `Calendar` 类时,需设置并修改 `Calendar` 实例。而在 `java.time` 包中,可以使用 `plus` 方法结合 `ChronoUnit.SECONDS` 来增加秒数。具体选择取决于是否需要处理时区以及 Java 版本。
134 1
|
6月前
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
101 0
|
7月前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
7月前
|
Java
java将Date类型转化为固定格式yyyyMMdd字符串
java将Date类型转化为固定格式yyyyMMdd字符串
439 0
java实体类接收Date时间
java实体类接收Date时间
|
SQL Java 数据库
Java中Date各种相关用法
Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码  Calendar time=Calendar.getInstance(); time.clear(); time.
1163 0