简单的日期格式无法正确解析日期

时间:2017-09-26 13:12:50

标签: java android simpledateformat

当我使用简单的日期格式解析一些日期(次)时,下面的代码比预期的时间多出五个小时。我正在解析毫秒到字符串。我正在解析一些媒体文件的持续时间。例如,当我的媒体文件实际上是10分钟时,它提供5小时10分钟。有什么问题?

public static String formatTime(String time)  {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("H:mm:ss");
    Date  date = new Date(Long.parseLong(time));
    return simpleDateFormat.format(date);

2 个答案:

答案 0 :(得分:1)

您不应该使用Date来表示持续时间。如果Time是媒体文件的持续时间(以毫秒为单位),那么Date date = new Date(Long.parseLong(Time));将构建一个日期,该日期是1970年1月1日00:00之后的许多毫秒,在您的情况下将是那天00:10。

我担心您必须手动将您的毫秒分解为小时,分钟和秒,然后使用String.format("%d:%02d:%02d",hours,minutes,seconds)对其进行格式化。

答案 1 :(得分:-1)

我用这种方式工作正常

public static String FormatTime(String Time) {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss");
    Date d=new Date(Long.parseLong(Time));
    String formatted=simpleDateFormat.format(d);
    if (Long.parseLong(Time) > 3600000&&Long.parseLong(Time)<7200000 ) {
        formatted=String.format("%d %s",1,formatted);
    }
    else if (Long.parseLong(Time)>=7200000&&Long.parseLong(Time)<10800000 ){
        formatted=String.format("%d %s",2,formatted);
    }
    return formatted;
}