这可能是一个简单的问题。我正在使用SimpleDateFormat将String转换为日期。我通过互联网搜索解决了我的问题,但我没有找到任何东西。 但转型是错误的。我不知道为什么。
我想获取示例2015.09.30
的格式这是代码
Date date1 = null;
String sd ="2015.09.30";
try {
SimpleDateFormat sdToDate = new SimpleDateFormat("yyyy.MM.dd");
date1 = sdToDate.parse(sd);
} catch (ParseException ex2) {
ex2.printStackTrace();
}
当我知道输出date1时,我得到了这个: 9月30日星期三00:00:00 CEST 2015
我希望有人可以帮助我。这可能是一个简单的问题,但我不明白。
答案 0 :(得分:2)
当您将date1打印为例如:
System.out.println(date1);
Java使用Date::toString()
函数 - 因此您以默认格式打印日期。
如果要以不同方式打印,则需要使用格式化程序,例如:
System.out.println(sdToDate.format(date1));
答案 1 :(得分:0)
Answer by Joanna Kotuła是正确的,但使用旧类。我们现在有了更好的选择。
您正在使用过时的课程。在Java 8及更高版本中使用java.time框架。请参阅Tutorial。
新类包含一个仅限日期值的类,没有时间或时区:LocalDate
。
您的输入字符串格式接近ISO 8601标准使用的格式,但标准使用的是HYPHEN而不是FULL STOP,year-month-day
。默认情况下,标准格式使用java.time类来解析和生成日期时间值的文本表示。所以,如果我是你,我只会replace字符,并避免费心去定义自定义解析格式。
String input = "2015.09.30".replace( "." , "-" );
LocalDate localDate = LocalDate.parse( input );
LocalDate
上的toString
方法会自动使用uuuu-MM-dd
的标准ISO 8601格式。
如果要以自己的格式生成输出字符串,则需要定义自定义格式模式。使用java.time.format包。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd" );
String output = localDate.format( formatter );
您也可以使用该格式化程序进行解析。
LocalDate localDate = LocalDate.parse( "2015.09.30" , formatter );