123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- /**
- * Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.example.xiaoshiweixinback.business.utils;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.time.DateFormatUtils;
- import org.apache.commons.lang3.time.DateUtils;
- import java.sql.Timestamp;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.time.LocalDateTime;
- import java.time.ZoneId;
- import java.time.ZonedDateTime;
- import java.time.temporal.ChronoUnit;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- public class DateUtil {
- /**
- * 获取YYYY格式
- *
- * @return
- */
- public static String getYear() {
- return formatDate(new Date(), "yyyy");
- }
- /**
- * 获取YYYY格式
- *
- * @return
- */
- public static String getYear(Date date) {
- return formatDate(date, "yyyy");
- }
- public static String getCurrentServerDate(String format) {
- return formatDate(new Date(), format);
- }
-
- /**
- * 获取YYYY-MM-DD格式
- *
- * @return
- */
- public static String getDay() {
- return formatDate(new Date(), "yyyy-MM-dd");
- }
- /**
- * 获取YYYY-MM-DD格式
- *
- * @return
- */
- public static String getDay(Date date) {
- return formatDate(date, "yyyy-MM-dd");
- }
- /**
- * 获取YYYYMMDD格式
- *
- * @return
- */
- public static String getDays() {
- return formatDate(new Date(), "yyyyMMdd");
- }
- /**
- * 获取YYYYMMDD格式
- *
- * @return
- */
- public static String getDays(Date date) {
- return formatDate(date, "yyyyMMdd");
- }
- /**
- * 获取YYYY-MM-DD HH:mm:ss格式
- *
- * @return
- */
- public static String getTime() {
- return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
- }
- /**
- * 获取YYYY-MM-DD HH:mm:ss.SSS格式
- *
- * @return
- */
- public static String getMsTime() {
- return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");
- }
- /**
- * 获取YYYYMMDDHHmmss格式
- *
- * @return
- */
- public static String getAllTime() {
- return formatDate(new Date(), "yyyyMMddHHmmss");
- }
- /**
- * 获取YYYY-MM-DD HH:mm:ss格式
- *
- * @return
- */
- public static String getTime(Date date) {
- return formatDate(date, "yyyy-MM-dd HH:mm:ss");
- }
- public static String formatDate(Date date, String pattern) {
- String formatDate = null;
- if (StringUtils.isNotBlank(pattern)) {
- formatDate = DateFormatUtils.format(date, pattern);
- } else {
- formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
- }
- return formatDate;
- }
- /**
- * @Title: compareDate
- * @Description:(日期比较,如果s>=e 返回true 否则返回false)
- * @param s
- * @param e
- * @return boolean
- * @throws
- * @author luguosui
- */
- public static boolean compareDate(String s, String e) {
- if (parseDate(s) == null || parseDate(e) == null) {
- return false;
- }
- return parseDate(s).getTime() >= parseDate(e).getTime();
- }
- /**
- * 格式化日期
- *
- * @return
- */
- public static Date parseDate(String date) {
- return parse(date,"yyyy-MM-dd");
- }
- /**
- * 格式化日期
- *
- * @return
- */
- public static Date parseTime(String date) {
- return parse(date,"yyyy-MM-dd HH:mm:ss");
- }
- /**
- * 格式化日期
- *
- * @return
- */
- public static Date parse(String date, String pattern) {
- try {
- return DateUtils.parseDate(date,pattern);
- } catch (ParseException e) {
- e.printStackTrace();
- return null;
- }
- }
- /**
- * 格式化日期
- *
- * @return
- */
- public static String format(Date date, String pattern) {
- return DateFormatUtils.format(date, pattern);
- }
- /**
- * 把日期转换为Timestamp
- *
- * @param date
- * @return
- */
- public static Timestamp format(Date date) {
- return new Timestamp(date.getTime());
- }
- /**
- * 校验日期是否合法
- *
- * @return
- */
- public static boolean isValidDate(String s) {
- return parse(s, "yyyy-MM-dd HH:mm:ss") != null;
- }
- /**
- * 校验日期是否合法
- *
- * @return
- */
- public static boolean isValidDate(String s, String pattern) {
- return parse(s, pattern) != null;
- }
- public static int getDiffYear(String startTime, String endTime) {
- DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
- try {
- int years = (int) (((fmt.parse(endTime).getTime() - fmt.parse(
- startTime).getTime()) / (1000 * 60 * 60 * 24)) / 365);
- return years;
- } catch (Exception e) {
- // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
- return 0;
- }
- }
- /**
- * <li>功能描述:时间相减得到天数
- *
- * @param beginDateStr
- * @param endDateStr
- * @return long
- * @author Administrator
- */
- public static long getDaySub(String beginDateStr, String endDateStr) {
- long day = 0;
- SimpleDateFormat format = new SimpleDateFormat(
- "yyyy-MM-dd");
- Date beginDate = null;
- Date endDate = null;
- try {
- beginDate = format.parse(beginDateStr);
- endDate = format.parse(endDateStr);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
- // System.out.println("相隔的天数="+day);
- return day;
- }
- /**
- * 得到n天之后的日期
- *
- * @param days
- * @return
- */
- public static String getAfterDayDate(String days) {
- int daysInt = Integer.parseInt(days);
- Calendar canlendar = Calendar.getInstance(); // java.util包
- canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
- Date date = canlendar.getTime();
- SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String dateStr = sdfd.format(date);
- return dateStr;
- }
- /**
- * 得到n天之后是周几
- *
- * @param days
- * @return
- */
- public static String getAfterDayWeek(String days) {
- int daysInt = Integer.parseInt(days);
- Calendar canlendar = Calendar.getInstance(); // java.util包
- canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
- Date date = canlendar.getTime();
- SimpleDateFormat sdf = new SimpleDateFormat("E");
- String dateStr = sdf.format(date);
- return dateStr;
- }
- /**
- * 格式化Oracle Date
- * @param value
- * @return
- */
- // public static String buildDateValue(Object value){
- // if(Func.isOracle()){
- // return "to_date('"+ value +"','yyyy-mm-dd HH24:MI:SS')";
- // }else{
- // return Func.toStr(value);
- // }
- // }
- /**
- * @Description: 获取当前时间的周一及周日
- * @Param: Date
- * @Author: LHX
- * @Date: 9:59 2018/11/19
- * @return: java.util.Map<java.lang.String,java.lang.String>
- */
- public static Map<String,String> getWeekDate(Date date) {
- Map<String,String> map = new HashMap();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
- cal.setFirstDayOfWeek(Calendar.MONDAY);
- // 获得当前日期是一个星期的第几天
- int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
- if(dayWeek==1){
- dayWeek = 8;
- }
- // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
- cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);
- Date mondayDate = cal.getTime();
- String weekBegin = sdf.format(mondayDate);
- //获取星期日
- cal.add(Calendar.DATE, 4 +cal.getFirstDayOfWeek());
- Date sundayDate = cal.getTime();
- String weekEnd = sdf.format(sundayDate);
- map.put("mondayDate", weekBegin);
- map.put("sundayDate", weekEnd);
- return map;
- }
- public static void main(String[] args) {
- System.out.println(getTime(new Date()));
- System.out.println(getAfterDayWeek("3"));
- }
- public static Long getRemainingSecond() {
- // 获取当前时间
- LocalDateTime now = LocalDateTime.now();
- // 计算当天零点的时间
- LocalDateTime midnight = now.plusDays(1).truncatedTo(ChronoUnit.DAYS);
- // 转换为ZonedDateTime以获取时区信息
- ZonedDateTime zonedDateTime = midnight.atZone(ZoneId.systemDefault());
- // 转换为Unix时间戳(秒)
- long midnightTimestamp = TimeUnit.MILLISECONDS.toSeconds(zonedDateTime.toInstant().toEpochMilli());
- // 获取当前时间的Unix时间戳(秒)
- long currentTimestamp = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
- // 计算剩余秒数直到当天零点
- // // 如果已经过了零点,则设置过期时间为0或者重新计算逻辑
- // if (ttlSeconds <= 0) {
- // ttlSeconds = 0; // 或者你可以设置为其他逻辑,比如下一个天的零点
- // }
- return midnightTimestamp - currentTimestamp;
- }
- }
|