将字符串转换为日期然后格式化日期

我正在使用代码将字符串格式化为日期

String start_dt = '2011-01-01'; DateFormat formatter = new SimpleDateFormat("YYYY-MM-DD"); Date date = (Date)formatter.parse(start_dt); 

但是如何将日期从YYYY-MM-DD格式转换为MM-DD-YYYY格式?

使用SimpleDateFormat #format(日期) :

 String start_dt = "2011-01-01"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-DD"); Date date = (Date)formatter.parse(start_dt); SimpleDateFormat newFormat = new SimpleDateFormat("MM-dd-yyyy"); String finalString = newFormat.format(date); 
 String start_dt = "2011-01-31"; DateFormat parser = new SimpleDateFormat("yyyy-MM-dd"); Date date = (Date) parser.parse(start_dt); DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); System.out.println(formatter.format(date)); 

印刷品:01-31-2011

测试了这段代码

 java.text.DateFormat formatter = new java.text.SimpleDateFormat("MM-dd-yyyy"); java.util.Date newDate = new java.util.Date(); System.out.println(formatter.format(newDate )); 

http://download.oracle.com/javase/1,5.0/docs/api/java/text/SimpleDateFormat.html

在此处输入图像描述

 String myFormat= "yyyy-MM-dd"; String finalString = ""; try { DateFormat formatter = new SimpleDateFormat("yyyy MMM dd"); Date date = (Date) formatter .parse("2015 Oct 09"); SimpleDateFormat newFormat = new SimpleDateFormat(myFormat); finalString= newFormat .format(date ); newDate.setText(finalString); } catch (Exception e) { } 

如需更多参考,请点击此处http://androiddhina.blogspot.in/2015/10/convert-string-to-date-format.html

TL;博士

 LocalDate.parse( "2011-01-01" ) .format( DateTimeFormatter.ofPattern( "MM-dd-uuuu" ) ) 

java.time

其他答案现在已经过时了。 麻烦的旧日期时间类,如java.util.Datejava.util.Calendarjava.text.SimpleDateFormat现在是遗留的 ,取而代之的是java.time类。

ISO 8601

输入字符串2011-01-01恰好符合日期时间文本的ISO 8601标准格式。 在解析/生成字符串时,java.time类在默认情况下使用这些标准格式。 因此无需指定格式化模式。

LocalDate

LocalDate类表示没有时间且没有时区的仅日期值。

 LocalDate ld = LocalDate.parse( "2011-01-01" ) ; 

通过调用toString以相同的格式生成String。

 String output = ld.toString() ; 

2011-01-01

DateTimeFormatter

要解析/生成其他格式,请使用DateTimeFormatter

 DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-dd-uuuu" ) ; String output = ld.format( f ) ; 

2011年1月1日


关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧遗留日期时间类,如java.util.DateCalendarSimpleDateFormat

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程 。 并搜索Stack Overflow以获取许多示例和解释。 规范是JSR 310 。

从哪里获取java.time类?

  • Java SE 8Java SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小function和修复。
  • Java SE 6Java SE 7
    • 许多java.timefunction都被反向移植到ThreeTen-Backport中的 Java 6和7。
  • Android的
    • ThreeTenABP项目特别适用于Android的ThreeTen-Backport (如上所述)。
    • 请参见如何使用ThreeTenABP ….

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目是未来可能添加到java.time的试验场。 您可以在这里找到一些有用的课程,如IntervalYearWeekYearQuarter等。

在一行中:

 String date=new SimpleDateFormat("MM-dd-yyyy").format(new SimpleDateFormat("yyyy-MM-dd").parse("2011-01-01")); 

哪里:

 String date=new SimpleDateFormat("FinalFormat").format(new SimpleDateFormat("InitialFormat").parse("StringDate")); 
  String start_dt = "2011-01-01"; // Input String SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // Existing Pattern Date getStartDt = formatter.parse(start_dt); //Returns Date Format according to existing pattern SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd-yyyy");// New Pattern String formattedDate = simpleDateFormat.format(getStartDt); // Format given String to new pattern System.out.println(formattedDate); //outputs: 01-01-2011