将Epoch值转换为12小时格式时间戳

时间:2016-10-05 09:33:31

标签: java scala epoch

我正在尝试将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

1 个答案:

答案 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。我认为问题出在日期转换的某个地方