Java 如何获取本年度的任何具体日期

Java 如何获取本年度的任何具体日期,java,date,Java,Date,嗨,我想知道是否有任何方法可以使用Jav的Date类或和Joda Time类来获得今年的特定日期。例如,如果我想要日期12/31/2013。这是一个问题的原因,因为我给出了某人生日的字符串表示形式,比如说“12311991”“MMddyyyy”,我想将其转换为具有月份12天31和2013年的日期 有人能帮我吗 我使用的是DateMidnight Joda time类,我使用简单的格式化程序将字符串解析为日期,但我想知道是否有办法将年份设置为特定的年份。尝试使用日历 set(int year,

嗨,我想知道是否有任何方法可以使用Jav的Date类或和Joda Time类来获得今年的特定日期。例如,如果我想要日期
12/31/2013
。这是一个问题的原因,因为我给出了某人生日的字符串表示形式,比如说
“12311991”
“MMddyyyy”
,我想将其转换为具有
月份12天31和2013年
的日期

有人能帮我吗

我使用的是DateMidnight Joda time类,我使用简单的格式化程序将字符串解析为日期,但我想知道是否有办法将年份设置为特定的年份。

尝试使用日历

set(int year,
   int month,
   int date)

,int,int)

如果要使用实现,可以执行以下操作。使用格式获取日期时间,然后使用方法更改年份

String dob = "12311991";
DateTimeFormatter fmt = DateTimeFormat.forPattern("MMddyyyy");
DateTime dt = fmt.parseDateTime(dob).withYear(2013);
System.out.println(dt);

首先将
字符串
转换为
日期

String dateString = "12311991";
SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyy");

Date date = sdf.parse(dateString);
结果是

Tue Dec 31 00:00:00 EST 1991
接下来,使用
日历
修改
年份

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.YEAR, 2013);
date = cal.getTime();
这导致

Tue Dec 31 00:00:00 EST 2013
只需使用SimpleDataFormat(查看所有格式模式)

java.time 其他答案已经过时了。旧的日期时间类以及Joda时间已经被内置到Java8和更高版本中的框架所取代

该类真正表示一个只包含日期的值,没有一天中的时间,也没有时区(缺少原始的日期时间类)

String string = "12/31/2013";
Date date = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH).parse(string);
System.out.println(date); 
String input = "12311991";
DateTimeFormatter formatter = DateTimeFormatter.forPattern("MMddyyyy");
LocalDate localDate = LocalDate.parse( input , formatter ); // 1991-12-31
LocalDate differentYear = localDate.withYear( 2013 );  // 2013-12-31