2016-10-05 74 views
1

我试图将Epoch时间转换为Scala中的Timestamp。将Epoch值转换为12小时格式时间戳

时代价值:1475596740

时间戳:1475596740 * 1000 => 1475596740000

结果时间戳总是给出结果在24小时format.But我想把它转换至12小时格式java/Scala.I使用下面的代码

val outputformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aa"); 
    val formatteddTS = outputformat.format(ts) 
    println(outputformat.parse(formatteddTS).getTime) 

我需要比较这个结果与另一个时间戳值在12小时forma吨。如果我做了比较,结果是有线的。

时间1(时代)

2016年10月4日21:29:00.0

1475596740000(毫秒)

时间2(时间戳在12小时内格式)

2016-10-04 09:29:28.0

1475553568000(In mi lliseconds)

结果

TIME2-TIME1 =>-43172

在逻辑2016年10月4日21之间的时间差:29:00.0和2016年10月4日9点29分28.0为28秒(28000),但我已经得到的结果是43172

+1

你应该在12小时格式结束时看到'AM'或'PM'。 –

+0

是的这是发生。但如果我将其转换为毫秒,那么值保持不变。 – BDR

+0

所以你说不要让它们变得一样。 – mhasan

回答

0

我相信有什么不对您的计算,因为我可以看到你所提供

数据正确的结果
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。我相信这个问题在日期转换的地方

+0

2016-10-04 21:29:00.0,2016-10-04 09:29:28.0将这个字符串转换为日期和getTime()从他们做差异。那么你可以理解我的意思。 – BDR

+0

逻辑上,2016-10-04 21:29:00.0和2016-10-04 09:29:28.0之间的时差约为28秒(28000),但我得到的结果是43172 – BDR

相关问题