日期工具类

public class DateUtils {

    private static final String DEFAULT_DATE_FMT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 得到当前时间戳, 秒
     *
     * @return
     */
    public static Long nowTimeStamp() {
        return LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
    }

    /**
     * 得到当前时间戳, 毫秒
     *
     * @return
     */
    public static Long nowTimeStampMS() {
        return LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
    }

    /**
     * 时间字符串解析
     *
     * @param strDate
     * @return
     */
    public static Date strParseDate(String strDate) {
        return strParseDate(strDate, DEFAULT_DATE_FMT);
    }

    /**
     * 时间字符串解析
     *
     * @param strDate
     * @param fmt
     * @return
     */
    public static Date strParseDate(String strDate, String fmt) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(fmt);
            return sdf.parse(strDate);
        } catch (ParseException e) {
            log.error("SimpleDateFormat parse date error date is {}", strDate);
        }
        return null;
    }

    /**
     * 字符串转时间戳
     *
     * @param strDate
     * @param fmt
     * @return
     */
    public static Long strParse2TimeStamp(String strDate, String fmt) {
        Date date = strParseDate(strDate, fmt);
        return date.getTime() / 100;
    }

    /**
     * 获取当前时间字符串, 按照给定的格式
     *
     * @return
     */
    public static String getNowFmt(String pattern) {
        LocalDateTime nowLdt = LocalDateTime.now();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        return dtf.format(nowLdt);
    }

    /**
     * 获取当前时间字符串, 按照给定的格式
     *
     * @return
     */
    public static String getNowPlus(String pattern, Long toAdd, ChronoUnit unit) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        return dtf.format(LocalDateTime.now().plus(toAdd, unit));
    }

    /**
     * 获取当前时间字符串, 按照给定的格式
     *
     * @return
     */
    public static Date getNowPlus(Long toAdd, ChronoUnit unit) {
        return Date.from(LocalDateTime.now().plus(toAdd, unit).toInstant(ZoneOffset.of("+8")));
    }

    /**
     * date -> 时间戳
     *
     * @param date
     * @return
     */
    public static Long date2TimeStamp(Date date) {
        return date.getTime() / 1000;
    }

    public static LocalDateTime timestamp2Datetime(long timestamp) {
        Instant instant = Instant.ofEpochMilli(timestamp);
        return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    }

    public static Date ts2Date(long timestamp) {
        LocalDateTime localDateTime = timestamp2Datetime(timestamp * 1000);
        return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
    }

    /**
     * 获取近半年前时间
     *
     * @param pattern
     * @return
     */

    public static Map<String, String> preHalfofYear(String pattern) {
        SimpleDateFormat dtf = new SimpleDateFormat(pattern);
        Calendar c = Calendar.getInstance();
        Map<String, String> map = new HashMap<>();
        c.setTime(new Date());
        map.put("afterMonth", dtf.format(c.getTime()));
        c.add(Calendar.MONTH, -6);
        map.put("preMonth", dtf.format(c.getTime()));
        return map;
    }

    /**
     * 获取给定时间段内 指定格式的所有日期天数
     */
    public static List<String> getNowFromTime(Date date, String pattern, int index) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        List<String> list = new ArrayList<>();
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        list.add(sdf.format(c.getTime()));
        for (int i = 1; i < index; i++) {
            c.add(Calendar.DATE, -1);
            list.add(sdf.format(c.getTime()));
        }
        return list;
    }

    /**
     * 获取前几(flag)天的日期
     *
     * @param flag
     * @return
     */
    public static List<Date> getLast7Days(int flag) {
        List<Date> last7Days = new ArrayList<>();
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        last7Days.add(calendar.getTime());
        for (int i = 1; i < flag; i++) {
            calendar.add(Calendar.DATE, -1);
            last7Days.add(calendar.getTime());
        }
        return last7Days;
    }

    /**
     * 获取给定时间戳距当前时间差
     *
     * @param timestamp
     * @return
     */
    public static Long getNowTimeDiff(Long timestamp) {
        return nowTimeStamp() - timestamp;
    }

    /**
     * 获取24小时之内日期集合
     */

    public static List<String> get24Hours() {
        List<String> hours = new ArrayList<>();
        for (int i = 23; i >= 0; i--) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.HOUR_OF_DAY, -i);
            //获取当前秒
            SimpleDateFormat s = new SimpleDateFormat("H时");
            //格式化时间格式
            hours.add(s.format(calendar.getTime()));
        }
        return hours;
    }


    /**
     * 获取当天日期集合
     */

    public static List<String> getOneDay() {
        List<String> hours = new ArrayList<>();
        Calendar curTime = Calendar.getInstance();
        int hour = curTime.get(Calendar.HOUR_OF_DAY);
        for (int i = hour; i >= 0; i--) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.HOUR_OF_DAY, -i);
            //获取当前秒
            SimpleDateFormat s = new SimpleDateFormat("H时");
            //格式化时间格式
            hours.add(s.format(calendar.getTime()));
        }
        return hours;
    }


    /**
     * 日期转换成字符串
     *
     * @param date
     * @return str
     */
    public static String DateToStr(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String str = format.format(date);
        return str;
    }


    /**
     * 日期转换成字符串
     *
     * @param date
     * @return str
     */
    public static String Date2Str(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("MM-dd");
        String str = format.format(date);
        return str;
    }


    /**
     * 获取某个日期为星期几
     *
     * @param date
     * @return String "星期*"
     */
    public static String getDayWeekOfDate1(Date date) {
        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;

        return weekDays[w];
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hutool的日期工具类是其中一个常用的类辅助工具之一。它提供了一系列方便的方法来处理日期和时间相关的操作。日期工具类具有以下特点: 1. 可以灵活地处理日期和时间的格式化和解析。 2. 可以进行日期计算和比较,例如计算两个日期之间的天数或小时数差距。 3. 可以对日期进行加减操作,例如增加几天或减去几小时。 4. 可以获取当前日期和时间,以及获取特定日期的年、月、日、小时、分钟、秒等信息。 日期工具类的使用非常简单,你可以使用DateTime类来进行日期相关的操作。DateTime类继承自java.util.Date,因此可以替代原生的Date类的使用,并且还提供了许多其他实用的方法。 例如,你可以使用DateTime的now()方法获取当前日期和时间,使用format()方法将日期格式化为指定的格式,使用parse()方法将字符串解析为日期对象,使用plusDays()方法增加指定的天数等等。 总的来说,Hutool的日期工具类提供了丰富的方法和功能,可以方便地处理日期和时间相关的操作。您可以根据具体的需求选择使用适合的方法来简化您的开发工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Hutool使用指南(一):时间日期工具](https://blog.csdn.net/C18298182575/article/details/131008226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [hutool 工具类](https://download.csdn.net/download/LiHaoYang11/12153632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值