Java程序员前来报道,时间你真的会处理吗

117 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

日常开发中你是否有遇到需要处理时间的问题,你又是怎么处理的呢?硬处理?格式化?各有千秋

  • LocalDate、LocalTime、LocalDateTime 相信大家多多稍稍都使用过吧。

LocalDate用法

  • 获取当前时间,最大时间,最小时间

LocalDate now = LocalDate.now(); 
LocalDate max = LocalDate.MAX; 
LocalDate min = LocalDate.MIN;

  • 这样的用法依旧是那么简约。

  • 自定义日期


LocalDate date = LocalDate.of(2019, 12, 24);

  • 获取当前日期是所在年的第几天、月的第几天、当前星期


LocalDate now = LocalDate.now(); 
int year = now.getDayOfYear(); 
int month = now.getDayOfMonth(); 
DayOfWeek week = now.getDayOfWeek();

  • 这个我们日常使用的频率应该还是挺高的。java也为我们做了日常的封装简化。

LocalDateTime

  • 我们的二号选手已经上场了。两者好像并没有什么却别。通过名称去看感觉LocalDataTime应该是更加高级电吧。

  • 获取当前时间


LocalDateTime now = LocalDateTime.now();

  • 指定日期

LocalDateTime now = LocalDateTime.now(); 
LocalDateTime time1 = now.withYear(2012); 
LocalDateTime time2 = now.withMonth(12); 
LocalDateTime time3 = now.withDayOfMonth(23); 
LocalDateTime time4 = now.withHour(8); 
LocalDateTime time5 = now.withMinute(8); 
LocalDateTime time6 = now.withSecond(8);


  • 怎么说呢?API操作也很简单吧

开发常用

  • 下面我们来看看我们平时的操作日常吧。最多的应该就是转换操作了吧。经常需要将不同格式进行转换或者需要将时间进行不同维度的转换。如果用原来的Date进行转换估计一般程序员还搞不定吧。

  • 比如说让你获取一天的最大最小时间。这个我们可以就自己去判断拼接就行了。但是这种做法先的很低级。不知道你是如何处理的。我都是通过格式算法去计算的。这样的代码看着自己就很舒服


public void date() { 

LocalDateTime now = LocalDateTime.now(); // 获取当前星期的第一天和最后一天 

LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); 

LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); 

log.info("当天最小时间:" + startTime); log.info("当天最大时间:" + endTime); 

}

  • 还有很多的操作,这里就不再一一展示了。具体的还需要我们自己去封装出符合自己的工具