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(); } } }
二、关于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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库