-2

以下代码给了我日期时间戳为 [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());
    }

对我有用的解决方案:

请访问链接。

4

2 回答 2

3

这适用于您支持 API 级别 26 的应用程序(本机支持java.time)或者您愿意/允许使用具有相同功能的反向移植库的情况。

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

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 日。

于 2020-07-01T14:36:14.050 回答
3

您的日期格式不正确

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

改成这个

dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS.SSS");
于 2020-07-01T14:37:49.883 回答