zoukankan      html  css  js  c++  java
  • 把数值转化为“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:尽量别在程序中把条件写死。方法二还可以优化,比较懒...

  • 相关阅读:
    使用C#实现WinForm窗体的动画效果
    c#制作飘动动画窗体
    c#制作简单启动画面
    C# windows media player详细用法(最全面)
    listbox的索引问题
    WindowsMediaPlayer播放完毕可以播放下一个
    Adobe Photoshop CC 2015安装激活
    C#中OpenFileDialog的使用
    点和多点
    五.几何对象和空间参考
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3043199.html
Copyright © 2011-2022 走看看