如何在java中将java双精度值转换为日期/时间格式(HH:mm:ss)?

如何在java中将java双精度值转换为日期/时间格式(HH:mm:ss)?,java,Java,我收到的输入是双精度的(例如:12803.000000),以小时为单位表示时间:分:秒,忽略点后的值。我只想使用java代码将这个双精度值转换为HH:mm:ss格式的1:28:03。如何达到预期的结果 我试过的代码: SimpleDateFormat df = new SimpleDateFormat("HH:mm"); String time = df.format(new Date((long) ((Double.parseDouble("12803.000000"))*60*60*1000

我收到的输入是双精度的(例如:12803.000000),以小时为单位表示时间:分:秒,忽略点后的值。我只想使用java代码将这个双精度值转换为HH:mm:ss格式的1:28:03。如何达到预期的结果

我试过的代码:

SimpleDateFormat df = new SimpleDateFormat("HH:mm");
String time = df.format(new Date((long) ((Double.parseDouble("12803.000000"))*60*60*1000)));
System.out.println("time>>"+time);
这段代码给我的输出是16:30,这不是预期的结果

蒂娅


我不知道您的双精度值是如何表示日期的,但是代码可以解决您的示例问题。

下面的代码应该会给出所需的结果

public static void main (String args[]) throws ParseException {
        Double value = 12803.000000;
        SimpleDateFormat format = new SimpleDateFormat("HHmmss");
        String intValueStr = String.valueOf(value.intValue() );
        int length = intValueStr.length();
        int missingDigits = 6- length;
        String strForTimeParsing = intValueStr;
        for(int i =0; i< missingDigits;i++){
            strForTimeParsing = "0"+strForTimeParsing;
        }
        System.out.println("Final String after padding Zeros at the start = "+strForTimeParsing);

        Date parsedDate = format.parse(strForTimeParsing);
        String format1 = new SimpleDateFormat("HH:mm:ss").format(parsedDate);

        System.out.println("Resulted Formatted Time = "+format1);
    }
publicstaticvoidmain(字符串args[])引发异常{
双值=12803.000000;
SimpleDateFormat=新的SimpleDateFormat(“HHmmss”);
String intValueStr=String.valueOf(value.intValue());
int length=intValueStr.length();
整数缺失位数=6-长度;
字符串strForTimeParsing=intValueStr;
对于(int i=0;i
下面的代码对我很有用。谢谢zhh的帮助

                    double x = 12803.000000;
                    String s = String.format("%06d", (int)x);
                    System.out.println("String val>>"+s);
                    DateFormat format = new SimpleDateFormat("HHmmss");
                    DateFormat format1 = new SimpleDateFormat("HH:mm:ss");
                    try {
                        Date date = format.parse(s);
                        System.out.println("date>>"+date);
                        System.out.println("time in String format>>"+format1.format(date));
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

输出:字符串格式的时间>>01:28:03

将双精度转换为字符串,然后使用DateFormat。我已经发布了我的答案。这是一个严重破坏的表示形式,您是从它开始的。@mannedear-您误解了我。我想说的是,从数学角度来看,用浮点数
12803.000000
表示
1:28:03
是毫无意义的。你的困难是由那些废话造成的。更好的解决方案-使用更有意义的表示。+1用于提供简单的解决方案。此外,我在您的代码上做了一些小的调整,只提取单独的时间,并在解决方案中分享了它。谢谢你,伙计!
                    double x = 12803.000000;
                    String s = String.format("%06d", (int)x);
                    System.out.println("String val>>"+s);
                    DateFormat format = new SimpleDateFormat("HHmmss");
                    DateFormat format1 = new SimpleDateFormat("HH:mm:ss");
                    try {
                        Date date = format.parse(s);
                        System.out.println("date>>"+date);
                        System.out.println("time in String format>>"+format1.format(date));
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }