Dateformat额外增加了30分钟的时间

时间:2017-01-03 19:21:21

标签: java android datetime simpledateformat

我正在使用此Android代码将毫秒转换为mm:ss.SS格式,但结果是dateformat在日期中增加了30分钟。

        Date date = new Date(millis);
        DateFormat dateFormat= new SimpleDateFormat("mm:ss.SS", Locale.US);
        best.add(dateFormat.format(date));\

实际上我想将毫秒转换为m:ss.SS格式。还有其他最好的方法来实现这个目标吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

设置TImezone

dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

我的猜测...如果你生活在GMT + 30分钟的时区,除非你指定一个不同的时区,你的格式化工将选择你当前的一个,所以它认为0小时为格林尼治标准时间和你在GMT + 30分钟,输出+30分钟......

要从用户当前位置获取时区,您可以使用:

 TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone   "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());

然后您可以在dateformat中设置时区。

它会返回“IST

之类的时区

您也可以尝试使用以下代码查找时区的GMT偏移量:

 public String getCurrentTimezoneOffset() {

    TimeZone tz = TimeZone.getDefault();  
    Calendar cal = GregorianCalendar.getInstance(tz);
    int offsetInMillis = tz.getOffset(cal.getTimeInMillis());

    String offset = String.format("%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60));
    offset = "GMT"+(offsetInMillis >= 0 ? "+" : "-") + offset;

    return offset;
}

它将返回Timezone,如: GMT + 05:30 此格式

通过使用时区,您可以在所有设备中找到准确的时间..

另见:https://developer.android.com/reference/java/util/TimeZone.html

答案 1 :(得分:0)

您可以将代码更改为:

DurationFormatUtils.formatDuration(millis, "mm:ss.SS");