请打印出昨天的此时此刻

请打印出昨天的此时此刻,这是我在面试一家公司时的面试题,在看到这道题的那一刻我有点蒙圈,因为我首先想到的是通过实例calender来依次获取日期,通过其day-1来实现此时此刻,但是这样会导致代码过长,显然不符合笔试特征,如下:

Calender cal = Calender.getInstance();
int year = cal.get(Calender.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int s = cal.get(Calendar.SECOND);
System.out.println(year+"-"+month+"-"+day+"  "+hour+":"+minute+":"+s);

写到一半,想起Calender有一个将日期前移一天的常量Calendar.DAY_OF_MONTH,宕机重写:

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar now = Calendar.getInstance();
//将日历往前移一天--移动的是month中的天数而不是week中的星期数
now.add(Calendar.DAY_OF_MONTH,-1);
System.out.println(sf.format(now.getTime()));

然后我就没管了,到做完被批斗的时候,面试官问,你用过LocalDateTime吗?完了,没好好学习,在学校里面没咋自己拓展过知识点,一脸蒙笔,然后,果不其然,我GG了,痛定思痛,去了解了下Java8的特性:LocalDate,LocalTime,LocalDateTime,好家伙,给我来阴的是吧:

LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(localDateTime.format(formatter));
// 打印昨天的此时此刻
System.out.println(LocalDateTime.now().minusDays(1).format(DateTimeFormatter.ofPattern("y  yyy-MM-dd HH:mm:ss")));
  • 通过DateTimeFormatterofPattern()方法调整日期格式。
  • 通过获取到的时间format()对格式进行匹配
  • 通过minusDay/plusDays对日期进行加减,此外还有hours,minutessecondsyearsmonth等后续方法。
    雀氏简洁很多,最关键的是这些方法都是线程安全的,而Date的相关方法与SimpleDateFormat是线程不安全的,所以以后,选择谁懂得都懂,不懂的我也不想多说什么(手动狗头)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值