簡體   English   中英

Dateformat 增加了額外的 30 分鍾時間

[英]Dateformat adds extra 30 minutes to time

我正在使用此 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 格式。 有沒有其他最好的方法來實現這一目標?

提前致謝。

設置時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());

然后您可以以日期格式設置時區。

它會返回像“ 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這種格式

通過使用時區,您可以在所有設備中找到准確的時間。

另請參閱:https ://developer.android.com/reference/java/util/TimeZone.html

您可以將代碼更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM