From ad4a2b07d134ce28b3db78633b5a0f5118bf2e2e Mon Sep 17 00:00:00 2001
From: 63e4982b46941e4a09ad57ad <63e4982b46941e4a09ad57ad@devide>
Date: Sat, 6 May 2023 06:51:00 +0000
Subject: [PATCH] Sat May 6 06:51:00 UTC 2023 inscode
---
Main.java | 474 +-----------------------------
pom.xml | 15 +
src/com/utils/DateTimeUtils.java | 483 +++++++++++++++++++++++++++++++
3 files changed, 500 insertions(+), 472 deletions(-)
create mode 100644 src/com/utils/DateTimeUtils.java
diff --git a/Main.java b/Main.java
index 4991560..02fc4fa 100644
--- a/Main.java
+++ b/Main.java
@@ -7,480 +7,10 @@ import java.time.temporal.TemporalQuery;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
-
+import com.utils.DateTimeUtils;
class Main {
public static void main(String[] args) {
DateTimeUtils.main(args);
}
- public enum DateTimeUtils {
-
- /**
- * 日期格式 [yyyy-MM-dd]
- **/
- YEAR("yyyy", 4),
- MONTH("MM", 2),
- DATE("yyyy-MM-dd", 10),
- DATE_FOR_EXCEL("yyyy.MM.dd", 10),
- DATE_SLASH("yyyy/MM/dd", 10),
- DATE_MONTH_FOR_EXCEL("yyyy-MM", 7),
- DATE_MONTH_SLASH_FOR_EXCEL("yyyy/MM", 7),
- TIME("HH:mm:ss", 8),
- DATE_TIME("yyyy-MM-dd HH:mm:ss", 19),
- DATE_TIME_FOR_EXCEL("yyyy.MM.dd HH:mm:ss", 19),
-
- YEAR_CHINESE("yyyy年", 5),
- MONTH_CHINESE("MM月", 3),
- DATE_MONTH_CHINESE("yyyy年MM月", 8),
- DATE_CHINESE("yyyy年MM月dd日", 11),
- DATE_TIME_CHINESE("yyyy年MM月dd日 HH时mm分ss秒", 21);
-
-
- private final DateTimeFormatter formatter;
-
- String pattern;
- int len;
-
- DateTimeUtils(String pattern, int len) {
- this.pattern = pattern;
- this.len = len;
- this.formatter = DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
- }
-
-
- /**
- * 获取现在时
- *
- * @return
- */
- public String now() {
- return formatter.format(Instant.now());
- }
-
- /**
- * 转换成时间字符串
- */
- public String formatDate(Date date) {
- return date != null ? formatter.format(date.toInstant()) : "";
- }
-
- public String formatIimestamp(long epochMilli) {
- return formatter.format(Instant.ofEpochMilli(epochMilli));
- }
-
- private R parse(String date, TemporalQuery query) {
- return formatter.parse(date, query);
- }
-
- private Date parseDate(String dateStr, TemporalQuery query) {
- return Date.from(parseInstant(dateStr, query));
- }
-
- private Instant parseInstant(String dateStr, TemporalQuery query) {
- R temporal = parse(dateStr, query);
- if (temporal instanceof Instant) {
- return (Instant) temporal;
- }
- if (temporal instanceof LocalDateTime) {
- return ((LocalDateTime) temporal).atZone(ZoneId.systemDefault()).toInstant();
- }
- if (temporal instanceof LocalDate) {
- return ((LocalDate) temporal).atStartOfDay(ZoneId.systemDefault()).toInstant();
- }
- if (temporal instanceof LocalDateTime) {
- LocalDate epoch = LocalDate.of(1970, 1, 1);
- LocalDateTime dateTime = LocalDateTime.of(epoch, (LocalTime) temporal);
- return dateTime.atZone(ZoneId.systemDefault()).toInstant();
- }
- throw new DateTimeException(" Type parameter must be LocalDateTime of LocalDate of LocalTime of Instant ");
- }
-
- /**
- * 字符串转换成时间
- */
- public Date parseDate(String dateStr) throws ParseException {
- return new SimpleDateFormat(pattern).parse(dateStr);
- }
-
- /**
- * 加对应数量的年单位
- */
- public static Date setYearDate(int year) {
- return setDate(year, 0, 0, null);
- }
-
- /**
- * 加对应数量的年单位
- */
- public static Date setYearDate(int year, Date date) {
- return setDate(year, 0, 0, date);
- }
-
- /**
- * 加对应数量的月单位
- */
- public static Date setMonthDate(int month) {
- return setDate(0, month, 0, null);
- }
-
- /**
- * 加对应数量的月单位
- */
- public static Date setMonthDate(int month, Date date) {
- return setDate(0, month, 0, date);
- }
-
- /**
- * 加对应数量的天单位
- */
- public static Date setDayDate(int day) {
- return setDate(0, 0, day, null);
-
- }
-
- /**
- * 加对应数量的天单位
- */
- public static Date setDayDate(int day, Date date) {
- return setDate(0, 0, day, date);
- }
-
- /**
- * 加对应数量的年月日单位
- */
- public static Date setDate(int year, int month, int day, Date date) {
- final Calendar instance = Calendar.getInstance();
- if (date != null) {
- instance.setTime(date);
- }
- instance.add(Calendar.YEAR, year);
- instance.add(Calendar.MONTH, month);
- instance.add(Calendar.DATE, day);
- return instance.getTime();
- }
-
- /**
- * 加对应数量的时分秒单位
- */
- public static Date setTime(int hour, int minute, int second, Date date) {
- final Calendar instance = Calendar.getInstance();
- if (date != null) {
- instance.setTime(date);
- }
- instance.add(Calendar.HOUR_OF_DAY, hour);
- instance.add(Calendar.MINUTE, minute);
- instance.add(Calendar.SECOND, second);
- return instance.getTime();
- }
-
- public String getPattern() {
- return pattern;
- }
-
- public int getLen() {
- return len;
- }
-
- /**
- * 获取当周第一天
- *
- * @param dateStr
- * @return
- */
- public static Date getFirstDayOfWeek(String dateStr) {
- if (dateStr == null || "".equals(dateStr)) {
- return null;
- }
- final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
- if (dateTimeUtil == null) {
- return null;
- }
- try {
- final Date date = dateTimeUtil.parseDate(dateStr);
- return getFirstDayOfWeek(date);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- /**
- * 获取当周第一天
- *
- * @param date
- * @return
- */
- public static Date getFirstDayOfWeek(Date date) {
- if (date == null) {
- return null;
- }
- final Calendar cal = Calendar.getInstance();
- try {
- cal.setTime(date);
- cal.set(Calendar.DAY_OF_WEEK, 1);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cal.getTime();
- }
-
- /**
- * 获取当周最后一天
- *
- * @param dateStr
- * @return
- */
- public static Date getLastDayOfWeek(String dateStr) {
- if (dateStr == null || "".equals(dateStr)) {
- return null;
- }
- final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
- if (dateTimeUtil == null) {
- return null;
- }
- try {
- final Date date = dateTimeUtil.parseDate(dateStr);
- return getLastDayOfWeek(date);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- /**
- * 获取当周最后一天
- *
- * @param date
- * @return
- */
- public static Date getLastDayOfWeek(Date date) {
- final Calendar cal = Calendar.getInstance();
- try {
- cal.setTime(date);
- cal.set(Calendar.DAY_OF_WEEK, 1);
- cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 6);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cal.getTime();
- }
-
- /**
- * 获取时间枚举工具类
- *
- * @param dateStr
- * @return
- */
- public static DateTimeUtils getDateTimeUtil(String dateStr) {
- if (null == dateStr) {
- return null;
- }
- DateTimeUtils[] values = DateTimeUtils.values();
- for (int i = 0; i < values.length; i++) {
- DateTimeUtils dateTimeUtil = values[i];
- if (dateTimeUtil.len == dateStr.length() && dateTimeUtil.pattern.charAt(4) == dateStr.charAt(4)) {
- return dateTimeUtil;
- }
- }
- return null;
- }
-
- /**
- * 获取月的最后一天
- *
- * @return
- */
- public static Date getLastDayOfMonth() {
- return getLastDayOfMonth(new Date(System.currentTimeMillis()));
- }
-
- /**
- * 获取月的最后一天
- *
- * @param date 日期
- * @return
- */
- public static Date getLastDayOfMonth(Date date) {
- final Calendar instance = Calendar.getInstance();
- instance.setTime(date);
- instance.set(Calendar.DAY_OF_MONTH, 1);
- instance.roll(Calendar.DAY_OF_MONTH, -1);
- return setTime(23, 59, 59, instance.getTime());
- }
-
- /**
- * 获取月的第一天
- *
- * @param date 日期
- * @return
- */
- public static Date getFirstDayOfMonth(Date date) {
- final Calendar instance = Calendar.getInstance();
- instance.setTime(date);
- instance.set(Calendar.DAY_OF_MONTH, 1);
- return instance.getTime();
- }
- public static Date getWeekendFirstDayOfMonday(String dateStr) {
- if (dateStr == null || "".equals(dateStr)) {
- return null;
- }
- final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
- if (dateTimeUtil == null) {
- return null;
- }
- try {
- final Date date = dateTimeUtil.parseDate(dateStr);
- return getWeekendFirstDayOfMonday(date);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 以周日为第一天的获取
- * @param date
- * @return
- */
- public static Date getWeekendFirstDayOfMonday(Date date) {
- if (date == null) {
- return null;
- }
- final Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- calendar.setFirstDayOfWeek(Calendar.MONDAY);
- calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
- return calendar.getTime();
- }
-
- public static Date getWeekendFirstDayOfSunday(String dateStr) {
- if (dateStr == null || "".equals(dateStr)) {
- return null;
- }
- final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
- if (dateTimeUtil == null) {
- return null;
- }
- try {
- final Date date = dateTimeUtil.parseDate(dateStr);
- return getWeekendFirstDayOfSunday(date);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
-
- }
-
- public static Date getWeekendFirstDayOfSunday(Date date) {
- if (date == null) {
- return null;
- }
- final Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- calendar.setFirstDayOfWeek(Calendar.MONDAY);
- calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
- return calendar.getTime();
- }
-
- /**
- * 转化成对应的中文内容
- *
- * @param dateStr
- * @param chineseDateTimeUtil
- * @return
- * @throws ParseException
- */
- public static String getDataChineseValue(String dateStr, DateTimeUtils chineseDateTimeUtil) throws ParseException {
- String chineseData = "";
- if (dateStr == null || "".equals(dateStr)) {
- return chineseData;
- }
- final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
- if (dateTimeUtil == null) {
- return chineseData;
- }
- chineseData = chineseDateTimeUtil.formatDate(dateTimeUtil.parseDate(dateStr));
-
- return chineseData;
- }
-
- private static String[] appsName = {"字符串通过指定枚举转换成Date"};
-
- public static void main(String[] args) {
- Scanner scan=new Scanner(System.in);
- //展示功能名称
-
- String select = viewAppName(scan);
- System.out.println(select);
- switch (select) {
- case "1":
- try {
- dateFormat(scan,new Date());
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- break;
-
- default:
- break;
- }
- }
- private static String viewAppName(Scanner scan) {
- System.out.println("请输入序号选择功能:");//提示输入
- for (int i = 0; i < appsName.length; i++) {
- System.out.println(String.format("[%d]:%s;", i+1 , appsName[i]));
- }
- try {
- return scan.nextLine();
- } catch (Exception e) {
- System.out.println("请输入正确的功能参数!!!!");
- //展示功能名称
- viewAppName(scan);
- }
- return "0";
- }
-
- /**
- * 对应参数转时间类�?
- * @return
- * @throws InterruptedException
- */
- private static void dateFormat(Scanner scan,Date date) throws InterruptedException {
- DateTimeUtils[] values = DateTimeUtils.values();
- for (int i = 0; i < values.length; i++) {
- DateTimeUtils dateTimeUtils = values[i];
- //转换方法的例子
- String formatDate = dateTimeUtils.formatDate(date);
- System.out.println(String.format("[%d] 解析字符串转换成:%s 格式 例:%s",i, dateTimeUtils.pattern,formatDate));
- }
- System.out.println("请选择解析类型");
- Thread.sleep(500);
- String nextLine = scan.next();
- DateTimeUtils dateTimeUtils = null;
- try {
- dateTimeUtils = values[Integer.parseInt(nextLine)];
- } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
- System.out.println("请输入正确的参数");
- dateFormat(scan,date);
- return ;
- }
-
- try {
- System.out.println("请输入要解析的字符串");
- nextLine = scan.next();
- while(dateTimeUtils.len != nextLine.length()) {
- System.out.println("输入字符串有误,请重新输入");
- nextLine = scan.next();
- }
- System.out.println(String.format("输入字符串 %s", nextLine));
- Date parseDate = dateTimeUtils.parseDate(nextLine);
- System.out.println(String.format("解析成功 解析后的时间 %s", DateTimeUtils.DATE_TIME.formatDate(parseDate)));
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return;
-
- }
-
-}
+
}
diff --git a/pom.xml b/pom.xml
index a282797..c028c6a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,21 @@
1.3
jar
+
+ org.apache.logging.log4j
+ log4j-core
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-api
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+ ${log4j.version}
+
diff --git a/src/com/utils/DateTimeUtils.java b/src/com/utils/DateTimeUtils.java
new file mode 100644
index 0000000..a449f05
--- /dev/null
+++ b/src/com/utils/DateTimeUtils.java
@@ -0,0 +1,483 @@
+package com.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalQuery;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Scanner;
+
+
+public enum DateTimeUtils {
+
+ /**
+ * 日期格式 [yyyy-MM-dd]
+ **/
+ YEAR("yyyy", 4),
+ MONTH("MM", 2),
+ DATE("yyyy-MM-dd", 10),
+ DATE_FOR_EXCEL("yyyy.MM.dd", 10),
+ DATE_SLASH("yyyy/MM/dd", 10),
+ DATE_MONTH_FOR_EXCEL("yyyy-MM", 7),
+ DATE_MONTH_SLASH_FOR_EXCEL("yyyy/MM", 7),
+ TIME("HH:mm:ss", 8),
+ DATE_TIME("yyyy-MM-dd HH:mm:ss", 19),
+ DATE_TIME_FOR_EXCEL("yyyy.MM.dd HH:mm:ss", 19),
+
+ YEAR_CHINESE("yyyy年", 5),
+ MONTH_CHINESE("MM月", 3),
+ DATE_MONTH_CHINESE("yyyy年MM月", 8),
+ DATE_CHINESE("yyyy年MM月dd日", 11),
+ DATE_TIME_CHINESE("yyyy年MM月dd日 HH时mm分ss秒", 21);
+
+
+ private final DateTimeFormatter formatter;
+
+ String pattern;
+ int len;
+
+ DateTimeUtils(String pattern, int len) {
+ this.pattern = pattern;
+ this.len = len;
+ this.formatter = DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.systemDefault());
+ }
+
+
+ /**
+ * 获取现在时
+ *
+ * @return
+ */
+ public String now() {
+ return formatter.format(Instant.now());
+ }
+
+ /**
+ * 转换成时间字符串
+ */
+ public String formatDate(Date date) {
+ return date != null ? formatter.format(date.toInstant()) : "";
+ }
+
+ public String formatIimestamp(long epochMilli) {
+ return formatter.format(Instant.ofEpochMilli(epochMilli));
+ }
+
+ private R parse(String date, TemporalQuery query) {
+ return formatter.parse(date, query);
+ }
+
+ private Date parseDate(String dateStr, TemporalQuery query) {
+ return Date.from(parseInstant(dateStr, query));
+ }
+
+ private Instant parseInstant(String dateStr, TemporalQuery query) {
+ R temporal = parse(dateStr, query);
+ if (temporal instanceof Instant) {
+ return (Instant) temporal;
+ }
+ if (temporal instanceof LocalDateTime) {
+ return ((LocalDateTime) temporal).atZone(ZoneId.systemDefault()).toInstant();
+ }
+ if (temporal instanceof LocalDate) {
+ return ((LocalDate) temporal).atStartOfDay(ZoneId.systemDefault()).toInstant();
+ }
+ if (temporal instanceof LocalDateTime) {
+ LocalDate epoch = LocalDate.of(1970, 1, 1);
+ LocalDateTime dateTime = LocalDateTime.of(epoch, (LocalTime) temporal);
+ return dateTime.atZone(ZoneId.systemDefault()).toInstant();
+ }
+ throw new DateTimeException(" Type parameter must be LocalDateTime of LocalDate of LocalTime of Instant ");
+ }
+
+ /**
+ * 字符串转换成时间
+ */
+ public Date parseDate(String dateStr) throws ParseException {
+ return new SimpleDateFormat(pattern).parse(dateStr);
+ }
+
+ /**
+ * 加对应数量的年单位
+ */
+ public static Date setYearDate(int year) {
+ return setDate(year, 0, 0, null);
+ }
+
+ /**
+ * 加对应数量的年单位
+ */
+ public static Date setYearDate(int year, Date date) {
+ return setDate(year, 0, 0, date);
+ }
+
+ /**
+ * 加对应数量的月单位
+ */
+ public static Date setMonthDate(int month) {
+ return setDate(0, month, 0, null);
+ }
+
+ /**
+ * 加对应数量的月单位
+ */
+ public static Date setMonthDate(int month, Date date) {
+ return setDate(0, month, 0, date);
+ }
+
+ /**
+ * 加对应数量的天单位
+ */
+ public static Date setDayDate(int day) {
+ return setDate(0, 0, day, null);
+
+ }
+
+ /**
+ * 加对应数量的天单位
+ */
+ public static Date setDayDate(int day, Date date) {
+ return setDate(0, 0, day, date);
+ }
+
+ /**
+ * 加对应数量的年月日单位
+ */
+ public static Date setDate(int year, int month, int day, Date date) {
+ final Calendar instance = Calendar.getInstance();
+ if (date != null) {
+ instance.setTime(date);
+ }
+ instance.add(Calendar.YEAR, year);
+ instance.add(Calendar.MONTH, month);
+ instance.add(Calendar.DATE, day);
+ return instance.getTime();
+ }
+
+ /**
+ * 加对应数量的时分秒单位
+ */
+ public static Date setTime(int hour, int minute, int second, Date date) {
+ final Calendar instance = Calendar.getInstance();
+ if (date != null) {
+ instance.setTime(date);
+ }
+ instance.add(Calendar.HOUR_OF_DAY, hour);
+ instance.add(Calendar.MINUTE, minute);
+ instance.add(Calendar.SECOND, second);
+ return instance.getTime();
+ }
+
+ public String getPattern() {
+ return pattern;
+ }
+
+ public int getLen() {
+ return len;
+ }
+
+ /**
+ * 获取当周第一天
+ *
+ * @param dateStr
+ * @return
+ */
+ public static Date getFirstDayOfWeek(String dateStr) {
+ if (dateStr == null || "".equals(dateStr)) {
+ return null;
+ }
+ final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
+ if (dateTimeUtil == null) {
+ return null;
+ }
+ try {
+ final Date date = dateTimeUtil.parseDate(dateStr);
+ return getFirstDayOfWeek(date);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 获取当周第一天
+ *
+ * @param date
+ * @return
+ */
+ public static Date getFirstDayOfWeek(Date date) {
+ if (date == null) {
+ return null;
+ }
+ final Calendar cal = Calendar.getInstance();
+ try {
+ cal.setTime(date);
+ cal.set(Calendar.DAY_OF_WEEK, 1);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return cal.getTime();
+ }
+
+ /**
+ * 获取当周最后一天
+ *
+ * @param dateStr
+ * @return
+ */
+ public static Date getLastDayOfWeek(String dateStr) {
+ if (dateStr == null || "".equals(dateStr)) {
+ return null;
+ }
+ final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
+ if (dateTimeUtil == null) {
+ return null;
+ }
+ try {
+ final Date date = dateTimeUtil.parseDate(dateStr);
+ return getLastDayOfWeek(date);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 获取当周最后一天
+ *
+ * @param date
+ * @return
+ */
+ public static Date getLastDayOfWeek(Date date) {
+ final Calendar cal = Calendar.getInstance();
+ try {
+ cal.setTime(date);
+ cal.set(Calendar.DAY_OF_WEEK, 1);
+ cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 6);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return cal.getTime();
+ }
+
+ /**
+ * 获取时间枚举工具类
+ *
+ * @param dateStr
+ * @return
+ */
+ public static DateTimeUtils getDateTimeUtil(String dateStr) {
+ if (null == dateStr) {
+ return null;
+ }
+ DateTimeUtils[] values = DateTimeUtils.values();
+ for (int i = 0; i < values.length; i++) {
+ DateTimeUtils dateTimeUtil = values[i];
+ if (dateTimeUtil.len == dateStr.length() && dateTimeUtil.pattern.charAt(4) == dateStr.charAt(4)) {
+ return dateTimeUtil;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取月的最后一天
+ *
+ * @return
+ */
+ public static Date getLastDayOfMonth() {
+ return getLastDayOfMonth(new Date(System.currentTimeMillis()));
+ }
+
+ /**
+ * 获取月的最后一天
+ *
+ * @param date 日期
+ * @return
+ */
+ public static Date getLastDayOfMonth(Date date) {
+ final Calendar instance = Calendar.getInstance();
+ instance.setTime(date);
+ instance.set(Calendar.DAY_OF_MONTH, 1);
+ instance.roll(Calendar.DAY_OF_MONTH, -1);
+ return setTime(23, 59, 59, instance.getTime());
+ }
+
+ /**
+ * 获取月的第一天
+ *
+ * @param date 日期
+ * @return
+ */
+ public static Date getFirstDayOfMonth(Date date) {
+ final Calendar instance = Calendar.getInstance();
+ instance.setTime(date);
+ instance.set(Calendar.DAY_OF_MONTH, 1);
+ return instance.getTime();
+ }
+ public static Date getWeekendFirstDayOfMonday(String dateStr) {
+ if (dateStr == null || "".equals(dateStr)) {
+ return null;
+ }
+ final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
+ if (dateTimeUtil == null) {
+ return null;
+ }
+ try {
+ final Date date = dateTimeUtil.parseDate(dateStr);
+ return getWeekendFirstDayOfMonday(date);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ /**
+ * 以周日为第一天的获取
+ * @param date
+ * @return
+ */
+ public static Date getWeekendFirstDayOfMonday(Date date) {
+ if (date == null) {
+ return null;
+ }
+ final Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.setFirstDayOfWeek(Calendar.MONDAY);
+ calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+ return calendar.getTime();
+ }
+
+ public static Date getWeekendFirstDayOfSunday(String dateStr) {
+ if (dateStr == null || "".equals(dateStr)) {
+ return null;
+ }
+ final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
+ if (dateTimeUtil == null) {
+ return null;
+ }
+ try {
+ final Date date = dateTimeUtil.parseDate(dateStr);
+ return getWeekendFirstDayOfSunday(date);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return null;
+
+ }
+
+ public static Date getWeekendFirstDayOfSunday(Date date) {
+ if (date == null) {
+ return null;
+ }
+ final Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.setFirstDayOfWeek(Calendar.MONDAY);
+ calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+ return calendar.getTime();
+ }
+
+ /**
+ * 转化成对应的中文内容
+ *
+ * @param dateStr
+ * @param chineseDateTimeUtil
+ * @return
+ * @throws ParseException
+ */
+ public static String getDataChineseValue(String dateStr, DateTimeUtils chineseDateTimeUtil) throws ParseException {
+ String chineseData = "";
+ if (dateStr == null || "".equals(dateStr)) {
+ return chineseData;
+ }
+ final DateTimeUtils dateTimeUtil = getDateTimeUtil(dateStr);
+ if (dateTimeUtil == null) {
+ return chineseData;
+ }
+ chineseData = chineseDateTimeUtil.formatDate(dateTimeUtil.parseDate(dateStr));
+
+ return chineseData;
+ }
+
+ private static String[] appsName = {"字符串通过指定枚举转换成Date"};
+
+ public static void main(String[] args) {
+ Scanner scan=new Scanner(System.in);
+ //展示功能名称
+
+ String select = viewAppName(scan);
+ System.out.println(select);
+ switch (select) {
+ case "1":
+ try {
+ dateFormat(scan,new Date());
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ private static String viewAppName(Scanner scan) {
+ System.out.println("请输入序号选择功能:");//提示输入
+ for (int i = 0; i < appsName.length; i++) {
+ System.out.println(String.format("[%d]:%s;", i+1 , appsName[i]));
+ }
+ try {
+ return scan.nextLine();
+ } catch (Exception e) {
+ System.out.println("请输入正确的功能参数!!!!");
+ //展示功能名称
+ viewAppName(scan);
+ }
+ return "0";
+ }
+
+ /**
+ * 对应参数转时间类�?
+ * @return
+ * @throws InterruptedException
+ */
+ private static void dateFormat(Scanner scan,Date date) throws InterruptedException {
+ DateTimeUtils[] values = DateTimeUtils.values();
+ for (int i = 0; i < values.length; i++) {
+ DateTimeUtils dateTimeUtils = values[i];
+ //转换方法的例子
+ String formatDate = dateTimeUtils.formatDate(date);
+ System.out.println(String.format("[%d] 解析字符串转换成:%s 格式 例:%s",i, dateTimeUtils.pattern,formatDate));
+ }
+ System.out.println("请选择解析类型");
+ Thread.sleep(500);
+ String nextLine = scan.next();
+ DateTimeUtils dateTimeUtils = null;
+ try {
+ dateTimeUtils = values[Integer.parseInt(nextLine)];
+ } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
+ System.out.println("请输入正确的参数");
+ dateFormat(scan,date);
+ return ;
+ }
+
+ try {
+ System.out.println("请输入要解析的字符串");
+ nextLine = scan.next();
+ while(dateTimeUtils.len != nextLine.length()) {
+ System.out.println("输入字符串有误,请重新输入");
+ nextLine = scan.next();
+ }
+ System.out.println(String.format("输入字符串 %s", nextLine));
+ Date parseDate = dateTimeUtils.parseDate(nextLine);
+ System.out.println(String.format("解析成功 解析后的时间 %s", DateTimeUtils.DATE_TIME.formatDate(parseDate)));
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return;
+
+ }
+
+}
--
GitLab