LocalData和LocalDataeTime的使用
import cn.hutool.core.date.DateUtil;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.ChineseDate;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Lists;
import org.apache.http.client.utils.DateUtils;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.*;
import static java.time.temporal.TemporalAdjusters.firstInMonth;
public class LocalDateTest {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
LocalDateTime min = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
LocalDateTime max = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
Date minDate = Date.from(min.atZone(ZoneId.systemDefault()).toInstant());
Date maxDate = Date.from(max.atZone(ZoneId.systemDefault()).toInstant());
LocalDate.parse("2020-02-02", DateTimeFormatter.ISO_DATE);
LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
String format = DateUtil.format(LocalDateTime.of(LocalDate.now(), LocalTime.MIN), "yyyy-MM-dd HH:mm:ss");
String minStr = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String maxStr = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
localDate.minusMonths(1);
localDate.plusDays(1);
LocalDate oneDay= LocalDate.parse("2023-01-01", dateTimeFormatter);
LocalDate twoDay= LocalDate.parse("2023-04-01", dateTimeFormatter);
long until = twoDay.until(oneDay, ChronoUnit.DAYS);
System.out.println(until);
long l = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).toInstant(ZoneOffset.of("+8")).toEpochMilli();
LocalDateTime firstday = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth());
Date date = new Date();
int year = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getYear();
}
private static void getWeek(int year){
LocalDate now = LocalDate.of(year, Month.JANUARY, 1);
DayOfWeek dayOfWeek = LocalDate.now().minusDays(1l).getDayOfWeek();
LocalDate sunday = now.with(firstInMonth(DayOfWeek.WEDNESDAY));
List<String> dayList = Lists.newArrayList();
do {
dayList.add(sunday.format(DateTimeFormatter.ISO_DATE));
sunday = sunday.plus(Period.ofDays(Calendar.DAY_OF_WEEK));
} while (sunday.getYear() == year);
log.log(dayList);
}
public static String getWeek(String sdate) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Date parseDate = dateFormat.parse(sdate);
Calendar c = Calendar.getInstance();
c.setTime(parseDate);
int week_index = c.get(Calendar.DAY_OF_WEEK) - 1;
if (week_index < 0) {
week_index = 0;
}
return weeks[week_index];
}
public static Map<Integer,String> getHoliday() {
int year = LocalDate.now().getYear();
Map<Integer,String> map = new HashMap<>();
map.put(HolidayEnum.NEWYEARDAY.getCode(),year + "-1-1");
ChineseDate chinesenewYear = new ChineseDate(year, 12, 30);
map.put(8,DateUtil.format(chinesenewYear.getGregorianDate(),"yyyy-MM-dd"));
ChineseDate chinesenewYearFestival = new ChineseDate(year, 1, 1);
map.put(HolidayEnum.CHINESENEWYEARGREGORIANFESTIVAL.getCode(),DateUtil.format(chinesenewYearFestival.getGregorianDate(),"yyyy-MM-dd"));
int param = year - 2000;
int qingmingDay = (int) (param * 0.2422 + 4.81) - param / 4;
map.put(HolidayEnum.QINGMINGFESTIVAL.getCode(),year + "-4-" + qingmingDay);
map.put(HolidayEnum.LABORDAY.getCode(),year + "-5-1");
ChineseDate dragonBoatFestival = new ChineseDate(year, 5, 5);
map.put(HolidayEnum.DRAGONBOATGREGORIANFESTIVAL.getCode(),DateUtil.format(dragonBoatFestival.getGregorianDate(),"yyyy-MM-dd"));
ChineseDate midAutumnFestival = new ChineseDate(year, 8, 15);
map.put(HolidayEnum.MIDAUTUMNGREGORIANFESTIVAL.getCode(),DateUtil.format(midAutumnFestival.getGregorianDate(),"yyyy-MM-dd"));
map.put(HolidayEnum.NATIONALDAY.getCode(),year + "-10-1");
return map;
}
public static Map<Integer,String> queryHoliday(){
Map<String,Object> map = new HashMap<>();
map.put("resource_id","39043");
map.put("format","json");
map.put("tn","wisetpl");
int year = LocalDate.now().getYear();
int [] queryMonth = {2,5,8,11};
String term = "";
Map<String, List<String>> holidayMap = new HashMap<>();
for (int i = 0; i < queryMonth.length; i++) {
map.put("query",year+"年"+queryMonth[i]+"月");
String result = HttpUtil.get("https://opendata.baidu.com/api.php", map);
JSONObject jsonObject = JSON.parseObject(result);
if (ObjectUtil.isNotNull(JSONUtil.parseArray(jsonObject.get("data")))){
JSONArray data = JSONUtil.parseArray(jsonObject.get("data"));
JSONArray almanac = JSONUtil.parseArray(JSONUtil.parseObj(data.get(0)).get("almanac"));
for (Object o : almanac) {
cn.hutool.json.JSONObject object = JSONUtil.parseObj(o);
if (ObjectUtil.isNotNull(object.get("status")) && object.get("status").equals("1")){
DateTime parse = DateUtil.parse(object.get("year") + "-" + object.get("month") + "-" + object.get("day"));
String format = DateUtil.format(parse, "yyyy-MM-dd");
System.out.println(format);
}
}
}
}
return null;
}
}
参考:
LocalDate和LocalDateTime基本使用方法
Oracle 时间格式