String类型的hh🇲🇲ss,SSS字符串转换为Long类型的毫秒数的java程序

cc7 发布于 2014/10/23 22:46
阅读 10K+
收藏 0

输入变量:String time = "12:27:12,456";[时:分:秒,毫秒]

输出结果:long milliSecond = ?; 即上面的时间转化为毫秒是多少毫秒?

要求:【java程序代码】,【不可以按时分秒毫秒截取字符段,再通过分别计算每个位的值乘以与毫秒之间的转化值,之后再加起来的方法,即12*60*60*1000+27*60*1000+12*1000+456得到结果。】

请各位大神帮忙!!

加载中
0
静心天涯
静心天涯
我专程测试了一下,没有任何问题,时间差值为 0.不知道是我测试错误了,还是不测试错误了
long l1 = 12 * 60 * 60 * 1000 + 27 * 60 * 1000 + 12 * 1000 + 456;
	    System.out.println("你口算的结果:"+l1);// 44832456
	    
	    
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
	    Date d = sdf.parse("2014-10-24 12:27:12,456");
	    SimpleDateFormat sdf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
	    Date d2 = sdf2.parse("2014-10-24 0:0:0,0");
	    
	    long s =  d.getTime() - d2.getTime();
	    
	    System.out.println("你要的结果:" + s);	// 0




cc7
cc7
你这次贴的代码和测试完全符合我的要求,是完全正确的。而且你这么一写,我就明白楼上大神说的差值28800000是什么了。“0:0:0,0”转换为date类后的gettime的值为-28800000。我的代码是直接将“12:27:12,456”转换date后gettime()的,没有减掉“0:0:0,0”转换为date类后的gettime的值。非常感谢。
0
公孙二狗
公孙二狗
用SimpleDateFormat先把字符串转换成 date, 然后 date.getTime()就得到毫秒了。
cc7
cc7
麻烦你贴代码,谢谢!
0
loyal
loyal
//hh这个没意义啊,HH才有意义啊,因为你转成了long啊..但愿你懂我意思
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss,SSS");
    Date d = sdf.parse("12:27:12,456");
    long l1 = 12 * 60 * 60 * 1000 + 27 * 60 * 1000 + 12 * 1000 + 456;
    System.out.println("你口算的结果:"+l1);
    long s =  l1 - d.getTime();
    System.out.println("与时间原点的差值:" + s );
    long rs = d.getTime() + s;//差值是:28800000
    System.out.println("你要的结果:" + rs);



cc7
cc7
差值是固定的吗?
静心天涯
静心天涯
你再拼一个作差值就可以了
0
静心天涯
静心天涯

其实这种问题,最好就百度。

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String str = sdf.format(new Date());
System.out.println("time: "+str);

try {
       System.out.println("time:"+sdf.parse(str).getTime());
} catch (ParseException e) {
        e.printStackTrace();
}

cc7
cc7
你这个答案和我之前用的思路是一样的,将你代码中“yyy-MM-dd HH:mm:ssE”改为“HH:mm:ss,SSS”,我这边求得不是当前时间,所以将你str直接用“12:27:12,456”代替。之后运行的结果和实际结果是不相符的,相差了28800000。你可以看看楼上的答案。 非常感谢你的回答!
返回顶部
顶部