把数值转化为“00:00:00”格式

输入(是取的数据库表中的数据):234.23、245.00、23.8、0等等

期望输出:“00:00:00”格式 

  例如:输入 234.23则先四舍五入为234,然后转化为“00:03:54”

使用第一种方法在本机得出正确结果,在测试机得出“23:03:54”



1.方法1:

开始是根据时间来处理的:

public String func1(Double date){

String result= sdf.format(date*1000-8*3600*1000);

return result;

}

结果在本机开发环境下(Windows、Eclipse)能得到正确的结果,但是到了测试机(Linux服务器)上面却不能得到正确的结果。应该是与时区有关!开始没发现,以为是传入的参数有问题,后来在本机测试是正确的,在测试机不正确才恍然大悟。取得时区把8替换,应该也能解决,但在网上找了找,没找到取得时区的方法,所以换成下面用字符串拼接的方法来处理。


2.方法2:

    public String formatNumberToHourMinuteSecond(Double dateDou){
        String ft = "00:00:00";//没匹配上时:1.等于0时; 2.大于等于86400时.
        BigDecimal d = new BigDecimal(dateDou).setScale(0, BigDecimal.ROUND_HALF_UP);//四舍五入
        int date = Integer.valueOf(d.toString());
        if(date > 0 && date < 60){
            ft = "00:00:" + date;
        }else if(date >= 60 && date < 3600){
            ft = "00:" + (date/60>=10?date/60:"0"+date/60) + ":" + (date%60>=10?date%60:"0"+date%60);
        }else if(date >= 3600 && date < 86400 ){
            ft = (date/3600>=10?date/3600:"0"+date/3600) + ":" + (date%3600/60>=10?date%3600/60:"0"+date%3600/60) + ":" + (date%60>=10?date%60:"0"+date%60);
        }
        return ft;
    }


PS:尽量别在程序中把条件写死。方法二还可以优化,比较懒...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值