Java 将UNIX/epoch时间转换为h:mm

Java 将UNIX/epoch时间转换为h:mm,java,android,Java,Android,我需要什么: public static String fromUnixTimestamp(String timestamp) { double itemDouble = Double.parseDouble(timestamp); long itemLong = (long) itemDouble; Date itemDate = new Date(itemLong); String itemDateStr = new SimpleDateFormat

我需要什么

    public static String fromUnixTimestamp(String timestamp) {

    double itemDouble = Double.parseDouble(timestamp);
    long itemLong = (long) itemDouble;
    Date itemDate = new Date(itemLong);
    String itemDateStr = new SimpleDateFormat("h:mm a").format(itemDate);


    return itemDateStr;
}
我需要将类似“1500322822.816785”的格式转换为类似“3:45pm”的格式

我所尝试的

    public static String fromUnixTimestamp(String timestamp) {

    double itemDouble = Double.parseDouble(timestamp);
    long itemLong = (long) itemDouble;
    Date itemDate = new Date(itemLong);
    String itemDateStr = new SimpleDateFormat("h:mm a").format(itemDate);


    return itemDateStr;
}
发生了什么事

    public static String fromUnixTimestamp(String timestamp) {

    double itemDouble = Double.parseDouble(timestamp);
    long itemLong = (long) itemDouble;
    Date itemDate = new Date(itemLong);
    String itemDateStr = new SimpleDateFormat("h:mm a").format(itemDate);


    return itemDateStr;
}
当双精度转换为长精度时,它会四舍五入(我认为),因此,如果每个项目之间的距离不超过几分钟,则所有项目都具有相同的时间。

您可以这样做:

//i've removed the decimal digits from your number and added the L for long casting
Date itemDate = new Date(1500322822L * 1000);
//or alternatively you can do 
//Date itemDate = new Date((long)1500322822 * 1000);
String text = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a").format(itemDate);
//text is now "17-07-2017 08:20:22 PM"

您需要将UNIX时间乘以1000,因为Java
Java.util.Date
class要求毫秒数

您需要哪种精度?几秒钟就够了?如果是,您可以简单地删除小数部分,并仅转换1500322822部分以获得带有秒的日期。我希望尽可能精确,但我认为删除小数将是好的。我正在从JSON文件中读取这些值,所以我想在读入这些值之后,我必须对它们进行四舍五入。乘以1000修复了这个问题。谢谢