时间戳理解

在代码开发中,常常用long去表示一个时间,那一串1580704106823怎么计算呢

long time = 1580704106823L;

这个时间表示的是毫秒数,即1580704106823毫秒

1、毫秒到秒的转换,只需要/ 1000,即1580704106 秒

long seconds = time / 1000;

2、计算分钟数,26345064

long minutes = time/ (1000 * 60);

3、计算总小时数,439084 小时

long hours = time / (1000 * 60 * 60);

4、计算总的天数,18295 天

long days = time / (1000 * 60 * 60 * 24);

举例

1、每次隔五分钟进行计算,例如1:00开始 下次的i指向1:05时间

for (Long i = todayMinTime; i <= timeStamp; ) {
    i = i + 5 * 60 * 1000;
}

2、时间戳转localdatetime

/**
     * 时间戳转LocalDateTime
     *
     * @param timestamp
     * @return
     */
    public static LocalDateTime timestamToDatetime(long timestamp) {
        Instant instant = Instant.ofEpochMilli(timestamp);
        return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    }

3、将五分钟内所有时间向前调整00:00:00~00:05:00 取00:00:00的时间数据

 /**
     * 获取间隔5min的整分钟数据
     * 00:00:00~00:05:00 取00:00:00的时间数据
     * @param localDateTime
     * @return
     */
    public static Long getTimeStampBefore(LocalDateTime localDateTime) {
        // LocalDateTime转时间戳
        long millisecond = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
        return millisecond - millisecond % (1000 * 60 * 5);
    }

4、将五分钟内所有时间向后调整00:00:00~00:05:00 取00:05:00的时间数据

/**
     * 获取间隔5min的整分钟数据
     *
     * @param localDateTime
     * @return
     */
    public static Long getTimeStamp(LocalDateTime localDateTime) {
        // LocalDateTime转时间戳
        long millisecond = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
        return millisecond - millisecond % (1000 * 60 * 5) + (1000 * 60 * 5);
    }

5、获取当前时间的前n分钟

//当前时间前n分钟
    public static LocalDateTime getLastNMin(int n) {
        long timeMillis = System.currentTimeMillis();
        //前n个分钟
        long timeLast2Hours = timeMillis - 1000 * 60 * n;
        Instant instant = Instant.ofEpochMilli(timeLast2Hours);
        return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    }

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值