gpt4 book ai didi

java - 使用 SimpleDateFormat 解析 10^-7

转载 作者:行者123 更新时间:2023-11-30 11:04:22 26 4
gpt4 key购买 nike

我正在尝试使用 java 的 SimpleDateFormat 解析一组日期。例如:

2015-05-05T13:53:00.0000000
2015-05-05T09:38:00.0000000
2015-05-05T00:33:00.0000000
2015-05-04T18:18:00.0000000

这是我目前的模式 yyyy-MM-dd'T'HH:mm:ss.SSS'0000' 但它会导致这些日期出现解析异常。我如何使用 SimpleDateFormat 解析这些日期?

我知道我可能会删除尾随零,但我不希望在解析之前操作日期字符串。

下面是这个问题的测试示例:

import java.util.ArrayList;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;

public class Test {
public static Date getDate(String value, String format) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat(format);
return df.parse(value);
}

public static List<Date> getDates(List<String> values, String format) throws ParseException {
List<Date> dates = new ArrayList<Date>();
for(String s : values) {
dates.add(getDate(s, format));
}
return dates;
}

public static void main(String... args) {
List<String> dates = new ArrayList<String>();
dates.add("2015-05-05T13:53:00.0000000");
dates.add("2015-05-05T09:38:00.0000000");
dates.add("2015-05-05T00:33:00.0000000");
dates.add("2015-05-04T18:18:00.0000000");

String format = "yyyy-MM-dd'T'HH:mm:ss.SSS'0000'";
try {
getDates(dates, format);
} catch(ParseException ex) {
System.out.println("exception parsing with " + format);
System.out.println(ex);
}
}
}

最佳答案

忽略毫秒:

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

问题是 S 被指定为 ms,而实际上它是秒的小数部分。现在在 . 之后扫描一个数字,并将其添加为日期的毫秒数。

或者 java 8 值得研究。

因为您使用的是 ISO 标准。 Java 8 变得非常简洁:

    LocalDateTime datetime = LocalDateTime.parse("2015-05-05T13:53:00.9990000");

这将再次产生“2015-05-05T13:53:00.999”——Java 8 解决了 ms 解释!

关于java - 使用 SimpleDateFormat 解析 10^-7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com