package cn.itcast.itcast;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
import java.util.Date;
/**
* 根据字符串转化为Date对象
*
* @author szw
* @since 2019-01-28 14:22
*/
public class DateFormatUtil {
private static final String FORMAT_YMD_1 = "yyyy-MM-dd";
private static final String FORMAT_YMD_2 = "yyyy MM dd";
private static final String FORMAT_YMD_3 = "yyyy/MM/dd";
private static final String FORMAT_YMD_4 = "yyyy年MM月dd日";
private static final String FORMAT_YMDHMS_1 = "yyyy-MM-dd HH:mm:ss";
private static final String FORMAT_YMDHMS_2 = "yyyy:MM:dd HH:mm:ss";
private static final String FORMAT_YMDHMS_3 = "yyyy MM dd HH mm ss";
private static final String FORMAT_YMDHMS_4 = "yyyy/MM/dd HH/mm/ss";
private static final String FORMAT_YMDHMS_5 = "yyyy年MM月dd日 HH时mm分ss秒";
private static final String FORMAT_YMDHMS_6 = "yyyy-MM-dd HH-mm-ss";
private static final String FORMAT_YMDHM_1 = "yyyy-MM-dd HH-mm";
private static final String FORMAT_YMDHM_2 = "yyyy-MM-dd HH:mm";
private static final String FORMAT_YMDHM_3 = "yyyy/MM/dd HH/mm";
private static final String FORMAT_YMDHM_4 = "yyyy年MM月dd日 HH时mm分";
private static final String FORMAT_HMS_1 = "HH:mm:ss";
private static final String FORMAT_HMS_2 = "hh:mm:ss";
private static final String FORMAT_HM_1 = "HH:mm";
private static final String FORMAT_HM_2 = "hh:mm";
private static final String FORMAT_AARY[] = new String[] { FORMAT_YMDHMS_1,
FORMAT_YMD_1, FORMAT_YMD_2, FORMAT_YMD_3, FORMAT_YMD_4, FORMAT_YMDHMS_2,
FORMAT_YMDHMS_3, FORMAT_YMDHMS_4, FORMAT_YMDHMS_5, FORMAT_YMDHMS_6,
FORMAT_YMDHM_1, FORMAT_YMDHM_2, FORMAT_YMDHM_3, FORMAT_YMDHM_4,
FORMAT_HMS_1, FORMAT_HMS_2, FORMAT_HM_1, FORMAT_HM_2 };
public static Date parseDate(String time) {
for (String format : FORMAT_AARY) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(time);
} catch (Exception el) {
}
}
return null;
}
public static LocalDateTime parseLocalDateTime(String time) {
for (String format : FORMAT_AARY) {
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
TemporalAccessor parse = dateTimeFormatter.parse(time);
return LocalDateTime.from(parse);
} catch (Exception el) {
}
}
return null;
}
/**java 8 参考地址(https://wen866595.iteye.com/blog/1958475)
* 一些类的介绍
*LocalDateTime:存储了日期和时间,如:2013-10-15T14:43:14.539。
* LocalDate:存储了日期,如:2013-10-15。
*LocalTime:存储了时间,如:14:43:14.539。
*上面的类可以由下面的类组合来:
* Year:表示年份。
*Month:表示月份。
*YearMonth:表示年月。
*MonthDay:表示月日。
*DayOfWeek:存储星期的一天。
*/
public static LocalDate parseLocalDate(String time) {
for (String format : FORMAT_AARY) {
try {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
TemporalAccessor parse = dateTimeFormatter.parse(time);
return LocalDate.from(parse);
} catch (Exception el) {
}
}
return null;
}
public static void main(String[] args) {
String date = "2015-05-05 16:38";
LocalDate localDateTime = parseLocalDate(date);
System.out.println(localDateTime.getDayOfYear());
}
}