我想将日期从MM / YYYY转换为MM / DD / YYYY,我怎样才能在Java中使用SimpleDateFormat? (注意:DD可以是该月的开始日期)
答案 0 :(得分:5)
请仔细阅读http://download.oracle.com/javase/1.5.0/docs/api/java/text/DateFormat.html以下链接,以便更清晰明了。
我想到的一种实施方式是:
String yourDate = <yourDate>
DateFormat dateFormat= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date date= new Date();
date = (Date)dateFormat.parse(yourDate);
//String dateString= dateFormat.format(date);
/*Print your date*/
请浏览此链接SimpleDateFormat
答案 1 :(得分:4)
try {
String str_date = "01/11";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("MM/yyyy");
date = (Date) formatter.parse(str_date);
formatter = new SimpleDateFormat("MM/dd/yyyy");
System.out.println("Today is " + formatter.format(date));
} catch (ParseException e) {
System.out.println("Exception :" + e);
}
答案 2 :(得分:0)
最简单的方法是使用字符串操作。
String date1 = "12/2010";
String date2 = date1.replace("/","/01/");
答案 3 :(得分:0)
YearMonth.parse(
"12/2016" ,
DateTimeFormatter.ofPattern( "MM/uuuu" ) )
)
.atDay( 1 )
.format( DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ) // 12/01/2016
Java现在包含YearMonth
类来表示这种类型的值,一个月和一年没有一个月的日期。
解析/生成月份字符串的默认格式为YYYY-MM
。该格式被定义为ISO 8601格式的一部分。默认情况下,java.time类使用ISO 8601格式。
您的输入字符串具有替代格式,因此我们必须指定格式设置模式。
String input = "12/2016" ; // December 2016.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/uuuu" );
YearMonth ym = YearMonth.parse( input , f );
通过调用toString
来查看结果。
String output = ym.toString();
2016-12
指定创建LocalDate
实例的日期。 LocalDate
类表示没有时间且没有时区的仅限日期的值。
LocalDate ld = ym.atDay( 1 );
你可以让班级弄清楚这个月的最后一天。请记住,2月闰年的长度不同。 YearMonth
类知道如何处理闰年。
LocalDate ld = ym.atEndOfMonth();
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和&amp; SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
仅供参考,Java有类似的类MonthDay
。