Java中关于日期的常见操作

Java中关于时间、日期的常见操作

主要涉及三个类:Date、Calendar、LocalDate/LocalTime/LocalDateTime类
参考:java Date 和 Calendar类 万字详解

1,Date日期操作

        Date nowDate = new Date();    // 获取当前时间Date
        // Date格式化为字符串
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String today = sdf.format(nowDate);   // 按照固定格式格式化对应字符串
        System.out.println(today);
        // 字符串解析为Date
        String dateStr = "2022-4-23 12:03:36";
        try {
            Date date1 = sdf.parse(dateStr);
            System.out.println(date1);
            System.out.println(sdf.format(date1));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //以时间戳来给定一个特定时刻,初始化date
        long currentTimeMillis = System.currentTimeMillis();
//        Date date2 = new Date(1572960924868L);
        Date date2 = new Date(currentTimeMillis);
        System.out.println(sdf.format(date2));
        // Date转为时间戳
        long time = date2.getTime();
        System.out.println(time);

        // Date的时区转换问题
        // CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间(4个不同时区), GMT(Greenwich Mean Time)代表格林尼治标准时间
        // 通过 Java 获取的CST时间用的是China Standard Time
        Date date = new Date();
        System.out.println(date);   // 默认输出CST时间(东八区)
//        Date date=new Date(1572960924868L);
        SimpleDateFormat sdf8=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf8.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));//设置时区为东八区
        System.out.println("东八区的时间:"+sdf8.format(date));//输出格式化日期

        SimpleDateFormat sdf9=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf9.setTimeZone(TimeZone.getTimeZone("GMT+9:00"));//设置时区为东九区
        System.out.println("东九区的时间:"+sdf9.format(date));//输出格式化日期

2,Calendar日期操作

        Calendar calendar = Calendar.getInstance();   // 获取当前时间calendar
        // 获取下个月第一天
        calendar.add(Calendar.MONTH, 1);   // calendar的月份+0
        calendar.set(Calendar.DAY_OF_MONTH, 1);   // 设置calendar的DAY_OF_MONTH为1
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String nextMonthFirst = sdf.format(calendar.getTime());  // 因为calendar的toString()显示不直观,一般转为Date格式化输出显示
        System.out.println(nextMonthFirst);
        // 获取当月最后一天(也就是下个月第0天)
        Calendar calendar1 =  Calendar.getInstance();
        calendar1.add(Calendar.MONTH, 1);
        calendar1.set(Calendar.DAY_OF_MONTH, 0);
        String lastday = sdf.format(calendar1.getTime());
        System.out.println(lastday);
        // 通过年月日设置calendar
        int year = 2000; int month = 5; int day = 18;
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);  //设置年份
        cal.set(Calendar.MONTH, month-1);   //设置月份, 注意-1,因为calendar的月份从0开始
        cal.set(Calendar.DAY_OF_MONTH, day);
        System.out.println(sdf.format(cal.getTime()));

        Calendar calendar2 = Calendar.getInstance();
        //获取某月最小天数
        int firstDay = calendar2.getMinimum(Calendar.DATE);
        //获取某月最大天数
        int lastDay = calendar2.getActualMaximum(Calendar.DATE);
        System.out.println(firstDay);
        System.out.println(lastDay);

3,Date和Calendar的转化

        // calendar转为Date
        Calendar calendar = Calendar.getInstance();   // 获取当前时间
        Date time = calendar.getTime();
        System.out.println(time);
        // Date转calendar
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse("2023-4-12");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1));

4,获取当前年份、月份、日期——2种方式

1)创建一个Calendar类的实例对象,Calendar类属于java.util包

        //1, 创建一个Calendar类的实例对象,Calendar类属于java.util包
        Calendar calendar = Calendar.getInstance();
        // 获取当前年
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);
        // 获取当前月, 注意+1,因为calendar的月份从0开始
        int month = calendar.get(Calendar.MONTH) + 1;
        System.out.println(month);
        // 获取当前日
        int day = calendar.get(Calendar.DATE);
        System.out.println(day);
        // 获取当前小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println(hour);
        // 获取当前分钟
        int minute = calendar.get(Calendar.MINUTE);
        System.out.println(minute);
        // 获取当前秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println(second);
        // 获取当前是本周第几天, 英语中周日才是第1天,依次后推
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println(dayOfWeek);
        // 获取当前是本月第几天
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(dayOfMonth);
        // 获取当前是本年第几天
        int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println(dayOfYear);

2)通过Date类,获取当前日期时间,然后通过split分割各个字段

        // 2,通过Date类,获取当前日期时间,然后通过split分割各个字段
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = new Date();
        String today = format.format(date);
        String[] dayTimeArr = today.split(" ");
        System.out.println(today);

2,多种格式化日期操作

根据日期得到第二天日期

根据日期得到第二天日期

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
,可以使用LocalDateTime类来处理日期。以下是一些常见的使用方法: 1. 创建LocalDateTime对象: ```java LocalDateTime time = LocalDateTime.now(); // 获取当前日期和时间 LocalDateTime specificTime = LocalDateTime.of(2021, 12, 6, 10, 11, 11); // 指定日期和时间 ``` 2. 修改LocalDateTime对象的日期和时间: ```java LocalDateTime modifiedTime = time.withYear(2020); // 修改年份 LocalDateTime modifiedTime = time.withMonth(11); // 修改月份 LocalDateTime modifiedTime = time.withHour(1); // 修改小时 LocalDateTime modifiedTime = time.withMinute(3); // 修改分钟 LocalDateTime modifiedTime = time.withSecond(1); // 修改秒数 LocalDateTime modifiedTime = time.withNano(1); // 修改纳秒数 LocalDateTime modifiedTime = time.with(ChronoField.DAY_OF_MONTH, 12); // 通用方法,修改日期 ``` 3. 计算两个LocalDateTime对象之间的时间差: ```java LocalDateTime startTime = LocalDateTime.of(2021, 12, 1, 10, 0, 0); LocalDateTime endTime = LocalDateTime.of(2021, 12, 6, 12, 0, 0); Duration duration = Duration.between(startTime, endTime); // 计算时间差 long minutes = duration.toMinutes(); // 获取时间差的分钟数 ``` 4. LocalDateTime与Date之间的转换: ```java // Date转LocalDateTime Date date = new Date(); LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); // LocalDateTime转Date LocalDateTime localDateTime = LocalDateTime.now(); Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); ``` 这些是使用LocalDateTime处理日期的一些常见操作。你可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值