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

How to convert date format 2017-02-08 00:00:00.0 to 08/02/2017 in java?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
          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);行中得到了nullpointerception。


您可以使用以下代码:

1
2
3
4
5
6
7
8
9
10
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();
}


其他的答案是过时的,使用一些麻烦的旧日期时间类,如SimpleDateFormat,这些旧的类现在是遗留的,被java.time类所取代。

LocalDateTime

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

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

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

LocalDate

提取仅限日期的对象。

1
LocalDate ld = ltd.toLocalDate();

DateTimeFormatter

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

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


1
2
3
4
5
6
7
8
9
10
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));

创建SimpleDateFormat对象,并使用它将字符串解析为日期,并将日期格式化为字符串。如果您尝试过simpledateformat,但它不起作用,请显示您的代码和可能收到的任何错误。

mm和mm都不同。月mm分,分钟mm分几个月的例子

1
2
3
4
5
6
'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)

几分钟的例子

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