【问题标题】:Dateformat adds extra 30 minutes to time日期格式增加了额外的 30 分钟时间
【发布时间】:2017-01-03 19:21:20
【问题描述】:

我正在使用此 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 格式。有没有其他最好的方法来实现这一点?

提前致谢。

【问题讨论】:

  • 您使用的时区有问题。你是怎么计算的,举个例子?
  • 我没有使用任何时区
  • 当然你使用了一个时区,这里隐含你的系统时区隐藏在SimpleDateFormat类中(我认为隐式设置是邪恶的)。 TimeZone.getDefault() 打印什么?还请打印变量millis,以便我们帮助进行进一步分析。我看到的另一个问题是只使用了两个符号 SS。您应该使用 SSS 几毫秒。
  • 看起来您想要格式化持续时间而不是日期。 stackoverflow.com/questions/266825/…
  • @laalto 格式化持续时间的最佳方法是什么?以不同的方式除以毫秒并获得分钟、秒或使用日期函数?

标签: java android datetime simpledateformat


【解决方案1】:

您可以将代码更改为:

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

【讨论】:

    【解决方案2】:

    设置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

    【讨论】:

    • 是的,我生活在 GMT+5:30 分钟的时区,所以这会因人而异。我必须为所有设备保持相同的内容吗?
    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多