如何在java中将java双精度值转换为日期/时间格式(HH:mm:ss)?
我收到的输入是双精度的(例如:12803.000000),以小时为单位表示时间:分:秒,忽略点后的值。我只想使用java代码将这个双精度值转换为HH:mm:ss格式的1:28:03。如何达到预期的结果 我试过的代码:如何在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
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();
}