提问者:小点点

如何在安卓系统中解码日期?


我以[2020-07-183 17:07:55.551]的形式获得Datetimestamp。 问题在Datetimestamp中带有“day”,它有三个值。 如何解码它的正确格式为天?

 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());
    }

共3个答案

匿名用户

日期格式不正确

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

更改为此

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

匿名用户

这是为了支持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日。

匿名用户

我知道DateFormatter是区分大小写的try

 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());
}