TimeUtils.java 2.84 KB
Newer Older
刘基明's avatar
刘基明 committed
1 2 3 4 5 6 7 8
package com.tanpu.community.util;

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

刘基明's avatar
刘基明 committed
9
public class TimeUtils {
刘基明's avatar
刘基明 committed
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        return instant.toEpochMilli();
    }

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

    //计算迄今时间
    public static String calUpToNowTime(LocalDateTime start) {
        Duration between = Duration.between(start, LocalDateTime.now());
        long duration = between.toMinutes();
        if (duration < 1) {
            return "刚刚";
        } else if (duration < 60) {
            return duration + "分钟前";
        } else if (duration < 60 * 24) {
            return duration / 60 + "小时前";
刘基明's avatar
刘基明 committed
32 33 34 35
        } else if (duration < 60 * 48) {
            return "1天前";
        } else if (duration < 60 * 24 * 180) {
            return start.format(DateTimeFormatter.ofPattern("MM-dd HH:mm"));
刘基明's avatar
刘基明 committed
36
        }
刘基明's avatar
刘基明 committed
37
        return start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
刘基明's avatar
刘基明 committed
38 39
    }

刘基明's avatar
刘基明 committed
40
    //计算迄今分钟
刘基明's avatar
刘基明 committed
41 42 43 44 45
    public static long calMinuteTillNow(LocalDateTime start) {
        Duration between = Duration.between(start, LocalDateTime.now());
        return between.toMinutes();
    }

刘基明's avatar
刘基明 committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    //计算迄今毫秒数
    public static long calMillisTillNow(LocalDateTime start) {
        Duration between = Duration.between(start, LocalDateTime.now());
        return between.toMillis();
    }

    //计算迄今天数
    public static long calDaysTillNow(LocalDateTime start) {
        Duration between = Duration.between(start, LocalDateTime.now());
        return between.toDays();
    }

    //计算迄今天数
    public static long calHoursTillNow(LocalDateTime start) {
        Duration between = Duration.between(start, LocalDateTime.now());
        return between.toHours();
    }

刘基明's avatar
刘基明 committed
64 65

    //计算n天前的时间
刘基明's avatar
刘基明 committed
66
    public static LocalDateTime getDaysBefore(Integer number) {
67
        return LocalDateTime.now().minusDays(number);
刘基明's avatar
刘基明 committed
68 69
    }

刘基明's avatar
刘基明 committed
70 71 72 73 74 75 76 77 78
    public static void main(String[] args) {
        System.out.println(calUpToNowTime(LocalDateTime.now().minusDays(180)));
        System.out.println(calUpToNowTime(LocalDateTime.now().minusDays(1)));
        System.out.println(calUpToNowTime(LocalDateTime.now().minusDays(18)));
        System.out.println(calUpToNowTime(LocalDateTime.now().minusHours(2)));
        System.out.println(calUpToNowTime(LocalDateTime.now().minusMinutes(12)));
        System.out.println(calUpToNowTime(LocalDateTime.now().minusSeconds(12)));
    }

刘基明's avatar
刘基明 committed
79
}