dateformat为时间增加了额外的30分钟

weylhg0b  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(430)

我使用这个android代码将毫秒转换为mm:ss.ss格式,但在result dateformat中,会额外增加30分钟的时间。

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

实际上我想把毫秒转换成m:ss.ss格式。有没有其他最好的方法来实现这一点?
提前谢谢。

pzfprimi

pzfprimi1#

您可以将代码更改为:

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

ha5z0ras2#

设置 TImezone :

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

我猜…如果你生活在一个gmt+30分钟的时区,除非你指定一个不同的时区,你的格式化程序会选择你当前的时区,所以它认为0小时是gmt,而你在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;
}

它将按以下格式返回时区:gmt+05:30
通过使用时区,您可以在所有设备中找到准确的时间。。
看到这个了吗also:httpshttp://developer.android.com/reference/java/util/timezone.html

相关问题