如何将两个不同的字符串日期转换为单个日期格式

我有两个字符串想要转换为特定的日期时间格式,以便我可以进行比较。我遇到的问题是它在解析中出错并出现异常,我想知道我是否做错了什么。想问将两个不同的字符串日期转换为单个日期格式的最佳方法是什么

SimpleDateFormat localDateFormat = new SimpleDateFormat("yyyy dd mm - HH:mm:ss");
        String firstDateString= "11 May 2018 21:03:51 GMT";
        String secondDateString= "dataStore.get("2018-05-11T21:03:51Z";

        Date firstDateFormat =localDateFormat.parse(firstDateString);
        Date secondDateFormat =localDateFormat.parse(secondDateString);


繁华开满天机
浏览 104回答 3
3回答

慕哥6287543

我遇到的问题是它在解析中出错并出现异常,我想知道我是否做错了什么。=> 是的,你确实在这样做。您首先需要将日期解析为实际格式,然后将其格式化为所需的格式。例如:用于解析和格式化2018-05-11T21:03:51ZDateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:MM:SS'z'", Locale.ENGLISH);DateFormat targetFormat = new SimpleDateFormat("yyyy dd mm - HH:mm:ss");Date date = originalFormat.parse("2018-05-11T21:03:51Z");String formattedDate = targetFormat.format(date);  // 2018 05 11 - 21:03:51

动漫人物

java.time    DateTimeFormatter firstFormatteer            = DateTimeFormatter.ofPattern("d MMM uuuu H:mm:ss z", Locale.ENGLISH);    String firstDateString = "11 May 2018 21:03:51 GMT";    String secondDateString = "2018-05-11T21:03:51Z";    Instant firstInstant = firstFormatteer.parse(firstDateString, Instant::from);    Instant seoncdInstant = Instant.parse(secondDateString);    System.out.println("The strings are parsed into " + firstInstant + " and " + seoncdInstant);输出是:字符串被解析为 2018-05-11T21:03:51Z 和 2018-05-11T21:03:51Z来自两个服务的字符串具有两种不同的格式,您能做的最好的事情就是以两种不同的方式处理它们。首先,定义一个与格式匹配的格式化程序。第二个是 ISO 8601 格式。Instant解析此格式时不需要任何显式格式化程序,因此这里我们不需要定义格式化程序。要进行比较,例如:    if (firstInstant.isBefore(seoncdInstant)) {        System.out.println("The first date and time comes first");    } else if (firstInstant.equals(seoncdInstant)) {        System.out.println("The date and time is the same");    }日期和时间相同类Instant是类的现代替代品Date,它代表了一个时刻。这个Date类设计得很糟糕,而且SimpleDateFormat非常麻烦,幸运的是它们都已经过时了。我建议您避免使用它们并使用 java.time(现代 Java 日期和时间 API)。

翻阅古今

这里:SimpleDateFormat localDateFormat = new SimpleDateFormat("yyyy dd mm - HH:mm:ss");该格式表示:4 年数字空格、2 天数字空格、2 个月数字 DASH 等等。事情是:你的字符串日期都不是:    "11 May 2018 21:03:51 GMT"     "2018-05-11T21:03:51Z"看起来像那样。第一个是“dd M yyy ...”(不以年份开头),第二个使用“-”而不是“”作为初始日期的分隔符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java