StrTest.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package com.xjrsoft.xjrsoftboot;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.db.Db;
  4. import com.xjrsoft.common.constant.GlobalConstant;
  5. import com.xjrsoft.common.exception.MyException;
  6. import com.xjrsoft.common.utils.DatasourceUtil;
  7. import lombok.Data;
  8. import org.junit.jupiter.api.Test;
  9. import javax.sql.DataSource;
  10. import java.sql.SQLException;
  11. import java.text.ParseException;
  12. import java.text.SimpleDateFormat;
  13. import java.time.DayOfWeek;
  14. import java.time.Instant;
  15. import java.time.LocalDateTime;
  16. import java.time.format.TextStyle;
  17. import java.time.temporal.ChronoUnit;
  18. import java.util.*;
  19. import static java.util.Calendar.DAY_OF_MONTH;
  20. public class StrTest {
  21. @Test
  22. public void formatTest() {
  23. String f = "《{}》等待{}审批。";
  24. System.out.println(StrUtil.format(f, "sdfsdf", "bbbbbb"));
  25. }
  26. @Test
  27. public void list2StrTest() {
  28. List<String> list = new ArrayList();
  29. String joined = String.join(",", list);
  30. }
  31. @Test
  32. public void arrayTest() {
  33. String f = "《{}》等待{}审批。";
  34. System.out.println(StrUtil.format(f, "sdfsdf", "bbbbbb"));
  35. }
  36. @Test
  37. public void date() throws ParseException {
  38. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  39. Date date = sdf.parse("2023-11-22 15:58:40");
  40. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  41. String leaveStartDayStr = sdf1.format(date);//"yyyy-MM-dd"
  42. String forenoonStartStr = leaveStartDayStr + " 00:00:00";//上午区间开始时间
  43. String forenoonEndStr = leaveStartDayStr + " 12:00:00";//上午区间结束时间
  44. String afternoonStartStr = leaveStartDayStr + " 12:00:00";//下午区间开始时间
  45. String afternoonEndStr = leaveStartDayStr + " 23:59:59";//下午区间结束时间
  46. //获取请假开始时间后一天的上午,下午区间
  47. Instant instant = date.toInstant();
  48. Calendar calendar = Calendar.getInstance();
  49. calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
  50. calendar.setTimeInMillis(instant.toEpochMilli());
  51. int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;//获取请假开始的星期(从星期日开始算,所以需要减1)
  52. calendar.add(DAY_OF_MONTH, 1);
  53. Date leaveStartDayTomorrow = calendar.getTime();
  54. String leaveTomorrowDayStr = sdf1.format(leaveStartDayTomorrow);//"yyyy-MM-dd"
  55. String forenoonStartTomorrowStr = leaveTomorrowDayStr + " 00:00:00";//上午区间开始时间
  56. String forenoonEndTomorrowStr = leaveTomorrowDayStr + " 12:00:00";//上午区间结束时间
  57. String afternoonStartTomorrowStr = leaveTomorrowDayStr + " 12:00:00";//下午区间开始时间
  58. String afternoonEndTomorrowStr = leaveTomorrowDayStr + " 23:59:59";//下午区间结束时间
  59. Date forenoonStartDate;
  60. Date forenoonEndDate;
  61. Date afternoonStartDate;
  62. Date afternoonEndDate;
  63. Date forenoonStartTomorrowDate;
  64. Date forenoonEndTomorrowDate;
  65. Date afternoonStartTomorrowDate;
  66. Date afternoonEndTomorrowDate;
  67. try {
  68. forenoonStartDate = sdf.parse(forenoonStartStr);
  69. forenoonEndDate = sdf.parse(forenoonEndStr);
  70. afternoonStartDate = sdf.parse(afternoonStartStr);
  71. afternoonEndDate = sdf.parse(afternoonEndStr);
  72. forenoonStartTomorrowDate = sdf.parse(forenoonStartTomorrowStr);
  73. forenoonEndTomorrowDate = sdf.parse(forenoonEndTomorrowStr);
  74. afternoonStartTomorrowDate = sdf.parse(afternoonStartTomorrowStr);
  75. afternoonEndTomorrowDate = sdf.parse(afternoonEndTomorrowStr);
  76. } catch (ParseException e) {
  77. throw new MyException("出现未知错误,请联系管理员");
  78. }
  79. System.out.println(afternoonStartTomorrowDate.compareTo(afternoonEndTomorrowDate));
  80. }
  81. @Test
  82. public void date01() throws ParseException {
  83. // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  84. // Date date = sdf.parse("2023-11-23 15:58:40");
  85. // Date date01 = sdf.parse("2023-11-25 12:58:40");
  86. // List<DateRange> list = splitDateRangeByDay(LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()),LocalDateTime.ofInstant(date01.toInstant(), ZoneId.systemDefault()));
  87. // // 添加元素到列表中
  88. // list.stream().forEach(element -> {
  89. // // 对元素进行操作
  90. // System.out.println(element.getBegin());
  91. // System.out.println(element.getEnd());
  92. // });
  93. LocalDateTime dateTime = LocalDateTime.now();
  94. DayOfWeek dayOfWeek = dateTime.getDayOfWeek();
  95. System.out.println(dayOfWeek); // 输出星期几的英文表示,例如:MONDAY, TUESDAY, 等等
  96. int dayOfWeekValue = dayOfWeek.getValue();
  97. System.out.println(dayOfWeekValue); // 输出星期几的数字表示,1 表示星期一,2 表示星期二,等等
  98. String dayOfWeekChinese = dayOfWeek.getDisplayName(TextStyle.FULL, Locale.CHINESE);
  99. System.out.println(dayOfWeekChinese); // 输出星期几的中文表示,例如:星期一,星期二,等等
  100. }
  101. @Data
  102. public class DateRange {
  103. /**
  104. * 开始时间
  105. */
  106. private LocalDateTime begin;
  107. /**
  108. * 结束时间
  109. */
  110. private LocalDateTime end;
  111. /**
  112. * 当前时间的第几轮(段)
  113. */
  114. private Long turnNum;
  115. }
  116. /**
  117. * 按日分割
  118. *
  119. * @param startTime 开始时间
  120. * @param endTime 结束时间
  121. * @return 分割后的时间段集合
  122. */
  123. private List<DateRange> splitDateRangeByDay(LocalDateTime startTime, LocalDateTime endTime) {
  124. long seconds = startTime.until(endTime, ChronoUnit.SECONDS);
  125. if (seconds < 0) {
  126. return new ArrayList<>();
  127. }
  128. //轮数
  129. long turnNum = 0;
  130. //分割的时间段集合,使用累加算法
  131. List<DateRange> dateList = new ArrayList<>();
  132. DateRange range = new DateRange();
  133. range.setBegin(startTime);
  134. while (true) {
  135. turnNum++;
  136. startTime = startTime.plusDays(1);
  137. //大于截止日期时,不再累加
  138. if (startTime.isAfter(endTime)) {
  139. range.setEnd(endTime);
  140. range.setTurnNum(turnNum);
  141. dateList.add(range);
  142. break;
  143. }
  144. //将时间调整为该天的 0时 0分 0秒
  145. startTime = LocalDateTime.of(startTime.getYear(), startTime.getMonth(), startTime.getDayOfMonth(), 0, 0, 0);
  146. LocalDateTime tmpBegin = startTime;
  147. //计算出上一天的最后一秒
  148. LocalDateTime endDate = tmpBegin.minusSeconds(1);
  149. range.setEnd(endDate);
  150. range.setTurnNum(turnNum);
  151. dateList.add(range);
  152. //创建新的时间段
  153. range = new DateRange();
  154. range.setBegin(tmpBegin);
  155. }
  156. return dateList;
  157. }
  158. @Test
  159. void test22() {
  160. String name = "2023年秋季";
  161. System.out.println(name.contains("秋季"));
  162. }
  163. @Test
  164. public void StringTest() {
  165. String str = "电子“1+x”集成电路检测技术应用(初级)考试";
  166. str = str.replace("“", "").replace("”", "").replace("\"", "").replace("\n", "").replace("\r", "").replace("\t", "");
  167. System.out.println(str);
  168. }
  169. @Test
  170. public void sortCodeTest() throws SQLException {
  171. DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
  172. Db use = Db.use(datasource);
  173. String sql = "SELECT max(sort_code) FROM evaluate_template";
  174. int sortCodeMax = use.queryNumber(sql, Integer.class).intValue();
  175. System.err.println(sortCodeMax);
  176. }
  177. }