我正在尝试将Epoch时间转换为Scala中的时间戳。
大纪元价值:1475596740
TimeStamp :1475596740 * 1000 => 1475596740000
结果时间戳总是以24HRs格式给出结果。但我想在java / Scala中将其转换为12小时格式。我使用以下代码
val outputformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");
val formatteddTS = outputformat.format(ts)
println(outputformat.parse(formatteddTS).getTime)
我需要将此结果与另一个12小时格式的时间戳值进行比较。如果我进行比较,则结果是有线的。
时间1(大纪元)
2016-10-04 21:29:00.0
1475596740000(以毫秒为单位)
时间2(12小时格式的时间戳)
2016-10-04 09:29:28.0
1475553568000(以毫秒为单位)
结果
time2-time1 =>的 -43172
逻辑上2016-10-04 21:29:00.0和2016-10-04 09:29:28.0之间的时差约为28秒(28000),但我得到的结果是43172
答案 0 :(得分:1)
我相信你的计算有问题,因为我可以看到你提供的数据的正确结果
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
long time1 = 1475596740000l;
long time2 = 1475553568000l;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa");
cal1.setTimeInMillis(time1);
System.out.println(dateFormat.format(cal1.getTime()));
cal2.setTimeInMillis(time2);
System.out.println(dateFormat.format(cal2.getTime()));
System.out.println(time1 - time2);
输出:
2016-10-04 10:59:00 PM
2016-10-04 10:59:28 AM
43172000
43172000大概应该是12小时
修改
好的,我已经按照您的提议使用了另一种方式,结果再次相同 - 43172000:
String date1 = "2016-10-04 21:29:00";
String date2 = "2016-10-04 09:29:28 AM";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa", Locale.ENGLISH);
Date dateObj1 = null;
Date dateObj2 = null;
try {
dateObj1 = format1.parse(date1);
dateObj2 = format2.parse(date2);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(dateObj1.getTime() - dateObj2.getTime());
对于" 2016-10-04 09:29:28 PM"它返回-28000。我认为问题出在日期转换的某个地方