非常方便的日期转换方式

最近开发过程中,需计算以当前时间为基准的时间戳,比如今天0点的时间戳,今天24点的时间戳。
所以总结了一下比较简洁的写法,代码如下:

package date;

import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class DateUtils {

    /**
     * 给定一个时间,获取这个时间对应的日期
     * 具体返回什么格式的日期,和formatter的pattern有关,自己定义就好,这里只是一个例子
     *
     * @param time 给定的时间
     * @return 返回的是年月日的格式,比如20211009
     */
    public static String localDateTime2Str(LocalDateTime time) {
        return time.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
    }

    /**
     * 给定一个时间,获取这个时间对应的时间戳
     *
     * @param time 给定的时间
     * @return 给定时间对应的时间戳
     */
    public static long getLocalDateTimeMills(LocalDateTime time) {
        return time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        // 获取当前时间对应的日期
        System.out.println("当前时间对应的日期:" + localDateTime2Str(now));
        // 获取当前时间对应的时间戳
        System.out.println("当前时间对应的时间戳:" + getLocalDateTimeMills(now));
        // 获取今天零点对应的时间戳
        LocalDateTime startOfDay = LocalDateTime.of(now.toLocalDate(), LocalTime.MIN);
        System.out.println("今天零点对应的时间戳:" + getLocalDateTimeMills(startOfDay));
        // 获取今天24点的时间戳
        LocalDateTime endOfDay = LocalDateTime.of(now.toLocalDate(), LocalTime.MAX);
        System.out.println("今天24点的时间戳:" + getLocalDateTimeMills(endOfDay));
        // 获取今天中午12点的时间戳
        LocalDateTime noonOfDay = LocalDateTime.of(now.toLocalDate(), LocalTime.NOON);
        System.out.println("今天中午12点的时间戳:" + getLocalDateTimeMills(noonOfDay));
        // LocalDateTime是可以进行加减运算的,所以可以计算N天前或者N天后的时间戳
        // 而且不仅仅可以按照天和星期计算,还可以按照小时,分钟,月,年计算。这里只是举几个简单的例子。
        // 获取明天24点的时间戳
        LocalDateTime tomorrowEndOfDay = LocalDateTime.of(now.plusDays(1).toLocalDate(), LocalTime.MAX);
        System.out.println("明天24点的时间戳:" + getLocalDateTimeMills(tomorrowEndOfDay));
        // 获取明天对应的日期
        System.out.println("明天对应的日期:" + localDateTime2Str(now.plusDays(1)));
        // 获取一周后对应的日期
        System.out.println("一周后对应的日期:" + localDateTime2Str(now.plusWeeks(1)));
        // 获取24小时后的时间戳
        System.out.println("24小时后的时间戳:" + getLocalDateTimeMills(now.plusDays(1)));
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值