java Date和LocalDate的使用

一、关于LocalDate的简单实用

1、获取本地的时间使用 LocalDate date = LocalDate.now();  LocalDate支持时间的加减法:可以对月份,年或者日进行加减法。比如计算本月的第一天可以如下操作:

        LocalDate date = LocalDate.now();
        int today = date.getDayOfMonth();
        date = date.minusDays(today - 1);

如上最终date显示的就是本月的第一天。创建当前的日期 -》获取今天是本月的第几天 -》然后将日期减去(today - 1) 则得到本月的第一天

如下是日历的一个打印函数,作为LocalDate的一个简单的例子的学习

复制代码
    private static void printDate() {
        LocalDate date = LocalDate.now();
        int today = date.getDayOfMonth();
        int month = date.getMonthValue();
        date = date.minusDays(today - 1);

        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        DayOfWeek dayOfWeek = date.getDayOfWeek();
        for (int i = 1; i < dayOfWeek.getValue(); ++i) {
            System.out.print("    ");
        }
        while (date.getMonthValue() == month) {
            System.out.printf("%3d", date.getDayOfMonth());
            if (date.getDayOfMonth() == today) {
                System.out.print("*");
            } else {
                System.out.print(" ");
            }
            date = date.plusDays(1);
            if (date.getDayOfWeek().getValue() == 1) {
                System.out.println();
            }
        }
    }
View Code
复制代码

 

二、关于Date的简单使用

1、Date的获取当前时间的方式不同,LocalDate使用.now的方式进行获取但是Date则使用:Date now = new Date();

2、如果要指定确定的时间则可以通过SimpleDateFormat这个类进行转换

        String dateString = String.format("%04d-%02d-%02d", year, month, day);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            hireDay = dateFormat.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

这里先将指定的年月日转换为标准的字符串格式,然后通过SimpleDateFormat.parse进行格式转换为Date类型的数据;那么最终打印出的hireDay 可能是如下所示的时间:hireDay=Sun Jan 01 00:00:00 CST 1989

另外,这里使用try-catch的方式是因为parse可能会发生异常,所以调用parse的时候系统强制要求增加该异常处理函数

3、如果将Date格式的时间转换为数值的年月日,可以通过Calendar函数进行转换

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(hireDay);
        System.out.println("year:" + calendar.get(Calendar.YEAR) + " month:" + calendar.get(Calendar.MONTH) + " day:" + calendar.get(Calendar.DAY_OF_MONTH));

通过调用Calendar.getInstance(); 返回对应的Calendar对象;该对象会设置默认的时区(本地的时区)还有当前的时间;当然也可以在getInstance中指定时区等参数

然后设置Date类型的时间,最后可以通过获取对应的年月日了。

如上的一个可能输出是:year:1989 month:0 day:1;注意这里month是从0开始

4、当我们在设置完成hireDay之后,获取这个hireDay的时候记得使用clone的方式,否则会出现hireDay在外部被更改的情况

    public Date getHireDay() {
        return (Date) hireDay.clone();
    }

 

posted @   LCAC  阅读(2408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示