iso日期和时间未提供所需格式

时间:2016-04-01 16:38:10

标签: java isodate

  1. 我应该使用什么格式来获取所需的输出

  2. 输入" 2016-04-01T16:23:19.8995" o / p = 2016-04-01T16:23:19.900因此.8995在输出中四舍五入为.900

    3.类似于输入" 2016-04-01T16:23:19.9995"预期产量为2016-04-01T16:23:20.000未达到预期产量

  3. 公共课日期{

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(
                "yyyy-MM-dd'T'HH:mm:ss.SSSS");
        System.out.println(sdf.parse("2016-04-01T16:23:19.9995"));
    
    }
    

    }

2 个答案:

答案 0 :(得分:1)

无论你使用多少S

S都意味着毫秒。

如果你想要这种行为,我建议你

  • 自己解析该部分或
  • 使用JSR 310,它可以在时间戳中处理纳秒。

在Java 8中使用DateTime库。

String dateTime = "2016-04-01T16:23:19.8995";
LocalDateTime localDateTime = LocalDateTime.parse(dateTime);
System.out.println(localDateTime);

打印

2016-04-01T16:23:19.899500

如果你想围绕它可以做到。

LocalDateTime inMillis = localDateTime.plusNanos(500_000).truncatedTo(ChronoUnit.MILLIS);
System.out.println(inMillis);

打印

2016-04-01T16:23:19.900

答案 1 :(得分:1)

在Java 8中,您可以使用java.time.LocalDateTime

LocalDateTime time = LocalDateTime.parse("2016-04-01T16:23:19.9995");
System.out.println(time); //gives 2016-04-01T16:23:19.999500 as output

LocalDateTime应至少为您提供所需的格式。 正如彼得回答的那样,无论你使用多少S,S都是毫秒。