如何解码 Android 中的日期? - 日期时间戳

How to decode the date in Android? - DATETIMESTAMP

以下代码为我提供了 [2020-07-183 17:07:55.551] 的日期时间戳。问题在于 Datetimestamp 中的“Day”,它具有三位数字。如何将 currentTimeMillis 格式化为正确的日期格式?

 public String Datetimesetter(long currentTimeMillis, SimpleDateFormat dateFormat) {
        
        dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS.SSS");
        // Create a calendar object that will convert the date and time value in milliseconds to date.
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(currentTimeMillis);
        return dateFormat.format(calendar.getTime());
    }

对我有用的解决方案:

请访问this link。

这适用于您支持 API 级别 26 的应用程序( 本机 支持 java.time)或者您愿意/允许使用具有相同功能的 backport library

然后你可以像这样使用正确/匹配的模式(考虑三位数天数的模式):

public static void main(String[] args) {
    // mock / receive the datetime string
    String timestamp = "2020-07-183 17:07:55.551";
    // create a formatter using a suitable pattern (NOTE the 3 Ds)
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-DDD HH:mm:ss.SSS");
    // parse the String to a LocalDateTime using the formatter defined before
    LocalDateTime ldt = LocalDateTime.parse(timestamp, dtf);
    // and print its default String representation
    System.out.println(ldt);
}

输出

2020-07-01T17:07:55.551

所以我猜是一年中的第几天。 183其实是7月1日

你的日期格式不正确

dateFormat = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS.SSS");

改成这个

dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS.SSS");