在代码开发中,常常用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());
}