我想将日期格式从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。
答案 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 );