All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.kits.DateTimeKit Maven / Gradle / Ivy

The newest version!
package io.github.kits;

import java.sql.Timestamp;
import java.time.Clock;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * 时间日期工具类
 *
 * @project: kits
 * @created: with IDEA
 * @author: kits
 * @date: 2018 04 27 下午3:35 | 四月. 星期五
 */
public class DateTimeKit {

    public static String YYYY_MM_DD_MM_HH_MM_SS_SSS = "yyyy-MM-dd HH:mm:ss:SSS";

    public static String YYYY_MM_DD_MM_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    public static String YYYY_MM_DD_MM_HH_MM = "yyyy-MM-dd HH:mm";

    public static String YYYYMMDDMMHHMMSS = "yyyyMMddHHmmss";

    public static String YYYYMMDDMMHHMM = "yyyyMMddHHmm";

    public static String YYYYMMDD = "yyyyMMdd";

    /**
     * 格式化时间
     *
     * @param date      日期
     * @param pattern    格式
     * @return          格式化后的字符串
     */
    public static String format(Date date, String pattern) {
        return DateTimeFormatter.ofPattern(pattern).format(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
    }

    /**
     * 格式化时间
     *
     * @param time      日期
     * @param pattern    格式
     * @return          格式化后的字符串
     */
    public static String format(long time, String pattern) {
        return format(new Date(time), pattern);
    }

    /**
     * 格式化日期为字符串格式,
     *      默认格式为: yyyy-MM-dd HH:mm:ss
     *
     * @param date      日期对象
     * @return          格式化后的字符串时间
     */
    public static String formatToDefaultPattern(Date date) {
        return format(date, YYYY_MM_DD_MM_HH_MM_SS);
    }

    /**
     * 格式化日期为字符串格式,
     *      默认格式为: yyyy-MM-dd HH:mm:ss
     *
     * @param time      时间戳
     * @return          格式化后的字符串时间
     */
    public static String formatToDefaultPattern(long time) {
        return format(time, YYYY_MM_DD_MM_HH_MM_SS);
    }

    /**
     * 获取当前的时间,并转换为date字符串
     *
     * @param pattern   格式
     * @return          格式化后的字符串
     */
    public static String now(String pattern) {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 获取当前的时间
     *
     * @return          格式化后的字符串时间
     */
    public static String now() {
        return now(YYYY_MM_DD_MM_HH_MM_SS);
    }

    /**
     * 获取当前的时间
     *
     * @return          当前时间戳
     */
    public static Long nowMillis() {
        return Clock.systemDefaultZone().millis();
    }

    /**
     * 获取当前Timestamp时间
     *
     * @return          Timestamp对象
     */
    public static Timestamp nowTimestamp() {
        return new Timestamp(nowMillis());
    }

    /**
     * 根据指定时间戳(毫秒ms),获取那天的0时0分0秒的时间戳
     *
     * @param time      要获取的那天时间戳
     * @return          时间戳
     */
    public static Long getStartTimeOfDay(Long time) {
        return LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
                .with(LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 根据指定时间戳(毫秒ms),获取那天的0时0分0秒的时间戳
     *
     * @param time      要获取的那天时间戳
     * @return          时间戳
     */
    public static Long getStartTimeOfDay(Date time) {
        return time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN)
                .atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 获取当天的开始时间0时0分0秒的时间戳
     *
     * @return          时间戳
     */
    public static Long getStartTimeOfDay() {
        return getStartTimeOfDay(nowMillis());
    }

    /**
     * 根据指定时间戳(毫秒ms),获取那天的23时59分59秒的时间戳
     *
     * @param time      要获取的当天的任意时间戳
     * @return          结束时间戳
     */
    public static Long getEndTimeOfDay(Long time) {
        return LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())
                .with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 根据指定时间戳(毫秒ms),获取那天的23时59分59秒的时间戳
     *
     * @param time      要获取的当天的任意时间
     * @return          结束时间戳
     */
    public static Long getEndTimeOfDay(Date time) {
        return time.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MAX)
                .atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 获取当天的结束时间23时59分59秒的时间戳
     *
     * @return          当天结束时间戳
     */
    public static Long getEndTimeOfDay() {
        return getEndTimeOfDay(nowMillis());
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy