【Java 日期,时间类+案例分析】

Java中处理时间,日期的类

1.Calendar类(日历类)

Calendar是java util包下的一个工具类,提供了很方便的不同日期格式的处理。

1.1Calendar类常用属性
属性作用
YEAR年份
MONTH月份
DATE同DAY_OF_MONTH,日期
DAY_OF_MONTH同DATE,日期
DAY_OF_YEAR这一天是这一年中的第几天
DAY_OF_WEEK_IN_MONTH当前月中的第几周
DAY_OF_WEEK一周中的第几天 / 星期
HOUR12小时制的时间
HOUR_OF_DAY24小时制的时间
MINUTE分钟数
SECOND秒数
MILLISECOND毫秒
1.2Calendar类的方法
返回值方法作用
public staticCalendar getInstance(TimeZone zone,Locale aLocale)获得一个日历对象
public intget(int field)传入field字段获得给定日历字段的值
public final voidset(int year,int month,int date,int hourOfDay,int minute,int second)设置日历对象代表的时间
public final voidsetTime(Date date)使用给定的 Date 设置此 Calendar 的时间。
public voidsetTimeInMillis(long millis)用给定的 long 值设置此 Calendar 的当前时间值。
public final DategetTime()返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
public longgetTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位。
public intgetActualMaximum(int field)传入Calendar.Date,得到这个月可能有多少天

案例:

public class Demo2 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //获取当前的年份
        int i = calendar.get(Calendar.YEAR);
        System.out.println(i);//2022
        //获取月份  需要加1的
        System.out.println(calendar.get(Calendar.MONTH) + 1);//8
        //获取当月的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//9
        //获取这周的第几天  漂亮国的周日是第1天
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//3
        //获取这一年的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//221
        //获取时
        System.out.println(calendar.get(Calendar.HOUR));//4
        System.out.println(calendar.get(Calendar.MINUTE));//39
        System.out.println(calendar.get(Calendar.SECOND));//3

        //重要的方法  获取当前的时间的 返回值是Date类型的数据
        //可以转为Date类型的数据
        Date time = calendar.getTime();
        System.out.println(time);
        //Tue Aug 09 16:40:21 IRKT 2022
        //这上面时间 对程序员相当不友好!!!
        //通过一个类将日期格式转换一下
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");
        //yyyy-MM-dd HH:mm:ss
        //年-月-天 时:分:秒
        //2022-08-09  16:43:32
        //将这个格式Tue Aug 09 16:40:21 IRKT 2022
        //转换为2022-08-09  16:43:32
        String format = sdf.format(time);
        System.out.println(format);
        //yyyy-MM-dd HH:mm:ss
        //以上能不能胡乱写?不能
        //以后开发中要用的!!

    }
}

2.SimpDateFormat类(日期格式化)

SimpleDateFormat 格式化与解析时间日期类 jdk1.8之前

2.1SimpDateFormat类的构造方法
方法名作用
SimpleDateFormat()此构造器返回默认的日期格式:20-6-8 下午12:08
SimpleDateFormat(String)此构造器返回指定日期格式(常用:yyyy-MM-dd HH:mm:ss)
2.2SimpDateFormat类的方法
方法作用
format(date)格式化: 日期—>字符串
parse(date)解析: 字符串—>日期

案例:

public class SimpleDateFormatDemo {

    public static void main(String[] args) throws ParseException {    //这里需要抛出异常
        //无参构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date date = new Date();

        //format():格式化  返回一个中国日期  日期 ---> 字符串
        System.out.println("------------格式化------------");
        String format = sdf.format(date);
        System.out.println(date); //Mon Jun 08 12:08:57 CST 2020
        System.out.println(format); //20-6-8 下午12:08

        //parse():解析: 格式化的逆过程  字符串 ---> 日期
        System.out.println("-----------解析-----------");
        String s1 = "20-6-8 下午12:08";
        Date parse = sdf.parse(s1);
        System.out.println(parse);
        //有参构造器
        System.out.println("----------有参构造器:指定日期格式---------");
        //格式化
        new SimpleDateFormat();
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format1 = sdf1.format(date);
        System.out.println(format1);
        //解析
        Date date1 = sdf1.parse(format1);
        System.out.println(date1);
    }
        String date = "2020-10-21";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse(date);
        java.sql.Date date2 = new java.sql.Date(date1.getTime());
        System.out.println(date2);
    }
}

3.LocalDate类(日历日期类)

简单一句话,Date用来表示时间点,LocalDate类用来表示日历日期。

还有LocalTime,LocalDateTime类(常用,时间日期类)

3.1LocalDate类的常用方法
方法名作用
LocalDate.of(int year,int month,int day)提供日期构造一个特定日期的对象;
LocalDate.now()获得当前日期,返回LocalDate类;
getYear()获得年份,返回int;
getMonthValue()获得月份,返回int;
getDayOfMonth()获得天数,返回int;
getDayOfWeek()获得当前是周几,以DayOfWeek类的一个实例返回;
plusDays(int n),minusDays(int n)生成当前日期之后或之前n天的日期;

案例:

public class TimeDemo {

    public static void main(String[] args) {
        //获取对象
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localTime);  //23:34:04.762
        System.out.println(localDate);  //2020-06-08
        System.out.println(localDateTime);  //2020-06-08T23:34:04.762

        LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 21, 10, 10, 10, 100000000);
        System.out.println(localDateTime1);  //2020-10-21T10:10:10.100

        System.out.println(localDateTime.getDayOfMonth());  //8
        System.out.println(localDateTime.getDayOfWeek());  //MONDAY
        System.out.println(localDateTime.getDayOfYear());  //160
        System.out.println(localDateTime.getMonth());      //JUNE
        System.out.println(localDateTime.getMonthValue());  //6
        System.out.println(localDateTime.getMinute());   //34

        LocalDateTime localDateTime2 = localDateTime.withDayOfMonth(30);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime2);   //2020-06-30T23:34:04.762

        LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime3);   //2020-09-08T23:34:04.762
    
        LocalDateTime localDateTime4 = localDateTime.minusMonths(1);
        System.out.println(localDateTime);   //2020-06-08T23:34:04.762
        System.out.println(localDateTime4);   //2020-05-08T23:34:04.762
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值