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

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

    3.对于输入“2016-04-01T16:23:19.9995”类似,预期输出为 2016-04-01T16:23:20.000 未获得预期输出


公共课日期{

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"));

}

}

4

2 回答 2

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
于 2016-04-01T16:47:42.700 回答
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 都是毫秒。

于 2016-04-01T16:52:59.693 回答