Java 时间(时分秒)格式化

package com.visy.utils;

/**
 * @author visy.wang
 * @description:
 * @date 2022/9/17 11:24
 */
public class TimeUtils {
    /**
     * 将毫秒转换为:h小时m分s秒
     * @param millis 毫秒数
     * @return
     */
    private static String millisToStr0(long millis){
        long totalSeconds = millis/1000;
        if(totalSeconds < 60){
            return totalSeconds+"秒";
        }else if(totalSeconds < 3600){
            long m = totalSeconds/60, s = totalSeconds%60;
            return m + "分" + s + "秒";
        }else{
            long h = totalSeconds/3600;
            totalSeconds = totalSeconds%3600;
            long m = totalSeconds/60, s = totalSeconds%60;
            return h + "小时" + m + "分" + s + "秒";
        }
    }

    /**
     * 将毫秒转换为指定时间格式
     * @param millis 毫秒数
     * @param units 自定义时间单位,自动根据指定顺序按60换算
     * @return h小时m分s秒
     */
    private static String millisToStr(long millis, String ...units){
        int size = units.length;
        if(size == 0){
            return millis+"ms";
        }
        long seconds = millis/1000;

        int index = 1;
        StringBuilder spendTime = new StringBuilder();

        for(String unit: units){
            int base = (int) Math.pow(60, size-index);
            if(seconds < base){
                continue;
            }
            spendTime.append(seconds/base).append(unit);
            seconds = seconds % base;
            index ++;
        }

        return spendTime.toString();
    }

    public static void main(String[] args) {
        System.out.println(millisToStr0(35793000L));
        System.out.println("-----------------------------");
        System.out.println(millisToStr(1000));
        System.out.println(millisToStr(1000, "秒"));
        System.out.println(millisToStr(35793000L, "秒"));
        System.out.println(millisToStr(35793000L, "分","秒"));
        System.out.println(millisToStr(35793000L, "小时","分","秒"));
    }
}
9小时5633-----------------------------
1000ms
135793596339小时5633
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值