js css html

日拱一卒:日期处理

2023-02-27  本文已影响0人  Tinyspot

1. 时间处理

1.1 默认时间格式

public class DateUtil {

    @Test
    public void test() {
        System.out.println(parseDateTime(new Date()));
        System.out.println(parseDate(new Date()));
        
        System.out.println(parseToDateTime("2023-01-06 22:34:55"));
        System.out.println(parseToDate("2023-01-06"));
    }

    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";

    public static String parseDate(Date date) {
        return parseDateByFormat(date, DEFAULT_DATE_FORMAT);
    }

    public static String parseDateTime(Date date) {
        return parseDateByFormat(date, DEFAULT_DATE_TIME_FORMAT);
    }

    private static String parseDateByFormat(Date date, String dateFormat) {
        if (date == null) {
            return null;
        }
        SimpleDateFormat format = new SimpleDateFormat(dateFormat);
        return format.format(date);
    }

    public static Date parseToDate(String date) {
        return parseToDateByFormat(date, DEFAULT_DATE_FORMAT);
    }

    public static Date parseToDateTime(String date) {
        return parseToDateByFormat(date, DEFAULT_DATE_TIME_FORMAT);
    }

    private static Date parseToDateByFormat(String date, String dateFormat) {
        SimpleDateFormat format = new SimpleDateFormat(dateFormat);
        try {
            return format.parse(date);
        } catch (ParseException e) {
            return null;
        }
    }
}

当天: 00:00:00 ~ 23:59:59

public static final String DEFAULT_START_TIME_PATTERN = "yyyy-MM-dd 00:00:00";
public static final String DEFAULT_END_TIME_PATTERN = "yyyy-MM-dd 23:59:59";

1.2 时间戳处理

public class Demo {

    @Test
    public void test() {
        Date date = new Date();
        System.out.println(timeStampToDateTime(date.getTime()));
    }

    /**
     * 时间戳转为时间格式
     *
     * @param value 时间戳,比如 1673015695603
     * @return 比如 2023-01-06 22:34:55
     */
    public static String timeStampToDateTime(Long value) {
        if (value == null) {
            return null;
        }
        Date date = new Date(value);
        return parseDateTime(date);
    }

    public static String timeStampToDateTime(String value) {
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        try {
            Date date = new Date(Long.parseLong(value));
            return parseDateTime(date);
        } catch (Exception e) {
            return null;
        }
    }
}

2. 日期计算

2.1 Calendar 属性

属性 描述
YEAR
MONTH JANUARY is 0
WEEK_OF_YEAR
WEEK_OF_MONTH
DATE The first day of the month has value 1
DAY_OF_MONTH
DAY_OF_YEAR
DAY_OF_WEEK
HOUR the 12-hour clock (0 - 11)
HOUR_OF_DAY the 24-hour clock
MINUTE
SECOND
MILLISECOND E.g., at 10:04:15.250
public static final Long ONE_HOUR_MILLISECONDS = 60 * 60 * 1000L;
public static final Long ONE_DAY_SECONDS = 24 * 60 * 60L;
public static final Long ONE_DAY_MILLISECONDS = 24 * 60 * 60 * 1000L;
public static final Long ONE_LIFE = 100L * 365 * 24 * 60 * 60 * 1000;

2.2 基础操作

@Test
public void test() {
    Calendar calendar = Calendar.getInstance();

    // get(...) 获取时间
    Date time = calendar.getTime();
    System.out.println(calendar.getTime().toLocaleString());
    System.out.println(calendar.getTimeInMillis());

    int year = calendar.get(Calendar.YEAR);
    // 月份从 0 开始,要 +1
    int month = calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    int second = calendar.get(Calendar.SECOND);
    System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second);

    // set(...) 修改时间
    calendar.set(Calendar.DATE, 5);
    System.out.println(calendar.getTime().toLocaleString());
}

打印结果:
2023-2-28 14:42:32
1677566552943
2023-2-28 14:42:32
2023-2-5 14:42:32

2.3 日期加减

@Test
public void test2() {
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime().toLocaleString());

    calendar.add(Calendar.DATE, 3);
    System.out.println(calendar.getTime().toLocaleString());

    calendar.add(Calendar.HOUR_OF_DAY, 1);
    System.out.println(calendar.getTime().toLocaleString());

    calendar.add(Calendar.MINUTE, 10);
    System.out.println(calendar.getTime().toLocaleString());
}

打印结果:
2023-2-28 14:52:56
2023-3-3 14:52:56
2023-3-3 15:52:56
2023-3-3 16:02:56

2.4 重置当天时间

@Test
public void test3() {
    Calendar calendar = Calendar.getInstance();
    System.out.println("minute: " + calendar.get(Calendar.MINUTE));
    System.out.println(fillPrefix(calendar.get(Calendar.HOUR_OF_DAY)) + ":" + fillPrefix(calendar.get(Calendar.MINUTE)));
    // 当天时间重置
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    System.out.println(calendar.getTime().toLocaleString());
}

private String fillPrefix(int time) {
    // 24小时制是两位数,不够左边补0
    if (time < 10) {
        return "0" + time;
    }
    return String.valueOf(time);
}

打印结果:
minute: 1
15:01
2023-2-28 0:00:00

上一篇 下一篇

猜你喜欢

热点阅读