如何转换日期格式2017-02-08 00:00:00.0至08/02/2017在java中?

时间:2017-02-07 12:21:35

标签: java date

我想将日期格式从2017-02-08 00:00:00.0转换为dd / MM / yyyy(08/02/2017)。我尝试使用以下代码。

          String dateInString  =bean.getDate();
          Date date = null;
          SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

          if (bean.getDate().matches("^[0-9]{2,4}(-[0-9]{1,2}){2}\\s[0-9]{1,2}(:[0-9]{1,2}){2}\\.[0-9]{1,}$")) {
                try {
                    date = formatter.parse(dateInString);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
          } 

但我在date = formatter.parse(dateInString);行收到NullPointerException。

4 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat format2 = new SimpleDateFormat("dd/MM/yyyy");
String date = "2017-02-08 00:00:00.0";
try {
    Date dateNew = format1.parse(date);
    String formatedDate = format2.format(dateNew);
    System.out.println(formatedDate);
} catch (ParseException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

创建一个SimpleDateFormat对象,并使用它将字符串解析为Date并将Dates格式化为字符串。如果您已尝试使用SimpleDateFormat并且它无法正常工作,请显示您的代码以及您可能收到的任何错误。

MM和mm都不同。 MM点月,mm点分 几个月的一些例子

'M' - 7  (without prefix 0 if it is single digit)
'M' - 12
'MM' - 07 (with prefix 0 if it is single digit)
'MM' - 12
'MMM' - Jul (display with 3 character)
'MMMM' - December (display with full name)

分钟的一些例子

'm' - 3  (without prefix 0 if it is single digit)
'm' - 19
'mm' - 03 (with prefix 0 if it is single digit)
'mm' - 19

答案 2 :(得分:0)

String dateInString = "2017-02-08 00:00:00.0";
Date date = null;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
    date = formatter.parse(dateInString);
} catch (ParseException e) {
      e.printStackTrace();
}
SimpleDateFormat formatter2 = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(formatter2.format(date));

答案 3 :(得分:0)

其他答案已经过时,使用了麻烦的旧日期时间类,例如SimpleDateFormat。这些旧类现在已经遗留下来,取而代之的是java.time类。

LocalDateTime

将输入字符串解析为LocalDateTime,因为输入缺少任何偏离UTC或时区的指示。

输入字符串几乎符合标准ISO 8601格式。默认情况下,标准格式与java.time类一起使用。用T替换中间的SPACE。

String input = "2017-02-08 00:00:00.0".replace( " " , "T" );
LocalDateTime ltd = LocalDateTime.parse( input );

LocalDate

提取仅限日期的对象。

LocalDate ld = ltd.toLocalDate();

DateTimeFormatter

生成表示该对象值的字符串。指定所需的格式模式。

Locale l = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ).withLocale( l );
String output = ld.format( f );