Java之时间类

目录

Date

基于1970年获取当前时间。
主要方法:
public Date() :获取当前时间对象。
源码:
  public Date() {
        this(System.currentTimeMillis());	//获取当前时间
    }
public Date(long date) :基于传入的date值获取当前时间对象。
public long getTime():返回日期时间的数字(毫秒数)
public boolean after(Date when) :在指定日期之后
public boolean before(Date when):在指定日期之前
实例:
public class Demo01 {
    public static void main(String[] args) {
        //Date()构造+getTime():
        long today = new Date().getTime();
        System.out.println("getTime():" + today);
        today -= 11115712;
        System.out.println("-----------------------");
        //Date(long date)构造:
        System.out.println("new Date(long date):" + new Date(today));
        System.out.println("-----------------------");
        //after():
        boolean test = new Date().after(new Date(today));
        System.out.println("after():" + test);
        System.out.println("-----------------------");
        //before():
        boolean code = new Date().before(new Date(today));
        System.out.println("before():" + code);
    }
}

结果:
getTime():1581164337862
-----------------------
new Date(long date):Sat Feb 08 17:13:42 CST 2020
-----------------------
after():true
-----------------------
before():false

SimpleDateFormat

对时间进行格式化处理:
主要方法:
public SimpleDateFormat(String pattern) :对时间进行格式化处理如:(yyyy-MM-dd HH:mm:ss),使用format()后时间会按照上述的顺序进行显示。
public final String format(Date date) :必须使用format时间才会按照格式化处理显示。
public Date parse(String source) throws ParseException :可以将格式正确的字符串转为时间。
实例:
public class Demo02 {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sim = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();
        System.out.println("format():" + sim.format(date));
        String str = "2020/2/8 14:36:45";
        System.out.println("parse():" + sim.format(sim.parse(str)));
    }
}

结果:
format()2020/02/08 22:00:24
parse()2020/02/08 14:36:45
注意:
parse()只要格式正确不符合时间的正确性如:分钟写80,不会报错会自动进位。

Calendar

Calendar要使用Calendar.getInstance()调用。
主要方法:
public int get(int field) :获取时间。
public void set(int field, int value) :设置时间。
set还有很多重载的方法。

在这里插入图片描述

实例:
public class Demo03 {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        //输出时间
        System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
                , cal.get(Calendar.YEAR)
                , cal.get(Calendar.MONTH)+1
                , cal.get(Calendar.DATE)
                , cal.get(Calendar.HOUR_OF_DAY)
                , cal.get(Calendar.MINUTE)
                , cal.get(Calendar.SECOND)
                , cal.get(Calendar.MILLISECOND)));
        System.out.println("---------------------------");
        //输出修改后的时间
        cal.set(Calendar.YEAR,2022);
        cal.set(Calendar.MINUTE,2);
        cal.set(Calendar.DATE,4);
        cal.set(Calendar.HOUR_OF_DAY,0);
        cal.set(Calendar.MINUTE,0);
        cal.set(Calendar.SECOND,0);
        cal.set(Calendar.MILLISECOND,0);
        System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
                , cal.get(Calendar.YEAR)
                , cal.get(Calendar.MONTH)+1
                , cal.get(Calendar.DATE)
                , cal.get(Calendar.HOUR_OF_DAY)
                , cal.get(Calendar.MINUTE)
                , cal.get(Calendar.SECOND)
                , cal.get(Calendar.MILLISECOND)));
        System.out.println("---------------------------");
        cal.set(2020,8,-1);
        //查看8月的最后一天
        System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
                , cal.get(Calendar.YEAR)
                , cal.get(Calendar.MONTH)+1
                , cal.get(Calendar.DATE)
                , cal.get(Calendar.HOUR_OF_DAY)
                , cal.get(Calendar.MINUTE)
                , cal.get(Calendar.SECOND)
                , cal.get(Calendar.MILLISECOND)));
                 cal.add(Calendar.DATE,1);
        //天数加1
        System.out.println("---------------------------");
        System.out.println(String.format("%s/%s/%s %s:%s:%s:%s"
                , cal.get(Calendar.YEAR)
                , cal.get(Calendar.MONTH)+1
                , cal.get(Calendar.DATE)
                , cal.get(Calendar.HOUR_OF_DAY)
                , cal.get(Calendar.MINUTE)
                , cal.get(Calendar.SECOND)
                , cal.get(Calendar.MILLISECOND)));
    }
}

结果:
2020/2/8 22:36:41:40
---------------------------
2022/2/4 0:0:0:0
---------------------------
2020/8/30 0:0:0:0
---------------------------
2020/8/31 0:0:0:0

LocalDate

时间处理。
主要方法:
public static LocalDate now():获取时间。
public int get(TemporalField field) 可以获取各种各样的日期数据。
public boolean isLeapYear():判断是否为闰年。
ublic LocalDate with(TemporalAdjuster adjuster):可以获取各种精细的时间数据。
public static LocalDate parse(CharSequence text) :将字符串转为时间。
实例:
public class Demo04 {
    public static void main(String[] args) {
        LocalDate local = LocalDate.now();
        LocalTime localtime = LocalTime.now();
        LocalDateTime localdatetime = LocalDateTime.now();
        System.out.println("【LocalDate获取时间】"+local);
        System.out.println("【LocalTime获取时间】"+localtime);
        System.out.println("【LocalDateTime获取时间】"+localdatetime);
        System.out.println("------------------------------------");
        System.out.println("【获取年份】"+local.getYear());
        System.out.println("【获取月份】"+local.getMonth().getValue());
        System.out.println("【获取当前月的第几周】"+local.get(ChronoField.ALIGNED_WEEK_OF_MONTH));
        System.out.println("【获取今年的第一天】"+local.get(ChronoField.DAY_OF_YEAR));
        System.out.println("------------------------------------");
        LocalDate date = LocalDate.parse("2000-03-17");
        System.out.println("【是否为闰年】"+date.isLeapYear());
        System.out.println("【所在天是周几】"+date.getDayOfWeek());
        System.out.println("【月的第一天】"+date.with(TemporalAdjusters.firstDayOfMonth()));
        System.out.println("【月的第二天】"+date.withDayOfMonth(2));
        System.out.println("【月的最后一天】"+date.with(TemporalAdjusters.lastDayOfMonth()));
        System.out.println("【所处月的第一天】"+date.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
        System.out.println("【所处年的第一天】"+LocalDate.parse("2000-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)));
        System.out.println("【在原有年的基础上增加10年】"+date.plusYears(10));
        //等等。。。还有许多
    }
}

结果:
【LocalDate获取时间】2020-02-08
【LocalTime获取时间】23:25:31.624798800
【LocalDateTime获取时间】2020-02-08T23:25:31.624798800
------------------------------------
【获取年份】2020
【获取月份】2
【获取当前月的第几周】2
【获取今年的第一天】39
------------------------------------
【是否为闰年】true
【所在天是周几】FRIDAY
【月的第一天】2000-03-01
【月的第二天】2000-03-02
【月的最后一天】2000-03-31
【所处月的第一天】2000-03-06
【所处年的第一天】2000-01-03
【在原有年的基础上增加10年】2010-03-17

有用处的文章

LocalDatetime:https://blog.csdn.net/HiBoyljw/article/details/81352934

LocalDate:https://blog.csdn.net/weixin_39723544/article/details/80091100

为什么要是用LocalDatetime而非Date:https://juejin.im/post/5d7787625188252388753eae

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值