猿问
下载APP

如何在不使用任何已弃用的类的情况下将日期从一种格式转换为另一种格式的另一种日期对象?

如何在不使用任何已弃用的类的情况下将日期从一种格式转换为另一种格式的另一种日期对象?

我想将date1格式的日期转换为date2格式的日期对象。

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy");
    SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd");
    Calendar cal = Calendar.getInstance();
    cal.set(2012, 8, 21);
    Date date = cal.getTime();
    Date date1 = simpleDateFormat.parse(date);
    Date date2 = simpleDateFormat.parse(date1);
    println date1
    println date2


慕娘9325324
浏览 20回答 3
3回答

慕妹3242003

用途SimpleDateFormat#format:DateFormat originalFormat = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH);DateFormat targetFormat = new SimpleDateFormat("yyyyMMdd");Date date = originalFormat.parse("August 21, 2012");String formattedDate = targetFormat.format(date);  // 20120821另请注意,parse采用已解析的 a String而非Date对象。

慕勒3428872

LocalDate.parse(      "January 08, 2017" ,      DateTimeFormatter.ofPattern( "MMMM dd, uuuu" , Locale.US ) ).format( DateTimeFormatter.BASIC_ISO_DATE )使用java.time问题和其他答案使用麻烦的旧日期时间类,现在是旧的,由java.time类取代。您有仅限日期的值,因此请使用仅限日期的类。该LocalDate级表示没有时间一天和不同时区的日期,唯一的价值。String input = "January 08, 2017";Locale l = Locale.US ;DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMMM dd, uuuu" , l );LocalDate ld = LocalDate.parse( input , f );您所需的输出格式由ISO 8601标准定义。对于仅限日期的值,“扩展”格式为YYYY-MM-DD等,2017-01-08并且最小化分隔符使用的“基本”格式为YYYYMMDD,例如20170108。我强烈建议使用扩展格式以提高可读性。但是如果你坚持基本格式,那格式化程序就被预定义为DateTimeFormatter名为的类的常量BASIC_ISO_DATE。String output = ld.format( DateTimeFormatter.BASIC_ISO_DATE );请参阅IdeOne.com上的此代码。ld.toString():2017-01-08输出:20170108关于java.time该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat。现在处于维护模式的Joda-Time项目建议迁移到java.time类。要了解更多信息,请参阅Oracle教程。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。从哪里获取java.time类?Java SE 8和 SE 9及更高版本内置。带有捆绑实现的标准Java API的一部分。Java 9增加了一些小功能和修复。Java SE 6和 SE 7许多java.time功能都被反向移植到ThreeTen-Backport中的 Java 6和7 。Android的所述ThreeTenABP项目适应ThreeTen-反向移植为Android(上面提到的)特异性。该ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多。

胡子哥哥

使用Java 8,我们可以实现如下:private static String convertDate(String strDate) {     //for strdate = 2017 July 25     DateTimeFormatter f = new DateTimeFormatterBuilder().appendPattern("yyyy MMMM dd")                                         .toFormatter();     LocalDate parsedDate = LocalDate.parse(strDate, f);     DateTimeFormatter f2 = DateTimeFormatter.ofPattern("MM/d/yyyy");     String newDate = parsedDate.format(f2);     return newDate;}输出将是:“07/25/2017”
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答