一:jdk8中的时间格式的所写:
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LocalDateTest {
/**
* 这是简单的使用localDate工具类
*/
@Test
public void testLocalDate(){
//获取到年月日的日期
LocalDate date = LocalDate.now(); //只能用做年月日格式
LocalTime time = LocalTime.now(); //只能用作时分秒
LocalDateTime now = LocalDateTime.now(); //专门用来处理年月日,时分秒的工具类
log.info("年月日为:{}, 时分秒格式为:{}, 年月日时分秒为:{}", date, time, now);
}
/**
* 定制的时间格式的测试方法
*/
@Test
public void special(){
LocalDate localdate = LocalDate.of(2020, 10, 12);
//时分秒
LocalTime time = LocalTime.of(21, 45, 45);
//年月日,时分秒
LocalDateTime dateTime = LocalDateTime.of(2020, 9, 23, 19, 34, 45);
log.info("年月日:{}, 时分秒:{}, 年月日时分秒:{}", localdate, time, dateTime);
}
/**
* 常见的redis中方法以及分别对应的功能作用
*/
@Test
public void functionTest(){
//获取到具体定制的时间
LocalDate date = LocalDate.of(2020, 10, 21);
//获取本月的第一天,输出2019-10-01
date.with(TemporalAdjusters.firstDayOfMonth());
//获取本月的最后一天
date.with(TemporalAdjusters.lastDayOfMonth());
//本年的第一天
date.with(TemporalAdjusters.firstDayOfNextYear());
//本年的最后一天
date.with(TemporalAdjusters.lastDayOfYear());
//本月的第2周的周五,输出时:2020-10-11
date.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY));
//下一个月的第一天,当
date.with(TemporalAdjusters.firstDayOfNextYear());
//加一天,输出是
date.plusDays(1);
//加一周
date.plusWeeks(1L);
//加一个月
date.plusMonths(1L);
}
/**
* 时间之间的比较
*/
public void compare(){
LocalDate first = LocalDate.now();
LocalDate of = LocalDate.of(2015, 12, 23);
//两个时间之间的比较
boolean before = first.isBefore(of);
boolean after = first.isAfter(of);
boolean equal = first.isEqual(of);
log.info("时间之间的比较值为:{}, {}, {}", before, after, equal);
}
/**
* dateToString -- 将一个date字符串化
*/
public void dateToString(){
LocalDate now = LocalDate.now();
String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
log.info("其中时间转换为string的结果为:{}", format);
}
}
定时任务:
只需在启动类上添加注解,同时在一个类上面添加一个注解,并且注意在类上面
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
//在自己编写的类编写一个定时cron表达式
@Component
public class TimeTask {
/**
* 就是两次任务开始间隔的时间
*/
@Scheduled(fixedRate = 2000)
public void fixedRate(){
System.out.println("每隔2秒钟执行");
}
@Scheduled(fixedDelay = 2000)
public void fixedDelay(){
System.out.println("本次任务结束到下次开始的时间间隔");
}
@Scheduled(cron = "0/5 * * * * *")
public void cron(){
System.out.println("测试cron表达式的方法");
}
/**
* 注意其中的通配符
* ? 表示不指定值
* * 表示所有的时间值,表示每一秒都会触发
* ,用来分开多个值例如10-12表示10-12都会触发
* -表示区间10--12都会触发
* /用于递增触发 秒5/15表示5秒开始,每增15秒触发
* #序号(表示每月的第几个周几) 6#3 每个月的第三个周五
* 例如在周字段设置6#3表示每个月的第三个周六
* L 表示最后的意思 日字段设置为当月的最后一天
* W表示离指定日期的最近的工作日,例如在日字段上设置15W
* 表示的就是离15号最近的工作日
* LW可以一组合使用,如果在日字段设置“LW"
* 则表示在本月的最后一个工作日
*/
/**
* 其中的cron中的表达式分别代表的
* 秒 分 时 日 月 周 年 其中年是可以省略的
*/
//表示的就是每天上午10,下午2 , 4点触发
// "0 0 10,14,16 * * ?
//朝九晚五工作时间内每半小时
// 0 0/30 9-17 * * ?
//每个星期三中午12点
// 0 0 12 ? * WED
//每天中午12点
// 0 0 12 ? * *
//每天上午10:15分执行
// 0 15 10 * * ?
//每天上午10:15执行
// 0 15 10 * * ? *
//2005年的每天的上午10:15分执行
// 0 15 10 * * ? 2005