0

嗨,我想知道是否有任何方法可以使用 Jav 的 Date 类或 Joda Time 类来获取今年的任何特定日期。例如,如果我想要日期12/31/2013。这是一个问题的原因是因为我给出了某人生日的字符串表示,"12311991" "MMddyyyy"我想将其转换为具有month 12 day 31 and year 2013.

谁可以帮我这个事?

我正在使用 DateMidnight Joda 时间类,并使用 Simple Formatter 将字符串解析为日期,但我想知道是否有任何方法可以将年份设置为特定年份。

4

5 回答 5

5

首先将其转换StringDate...

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

Date date = sdf.parse(dateString);

这导致......

Tue Dec 31 00:00:00 EST 1991

接下来,使用Calendar修改year

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

这导致...

Tue Dec 31 00:00:00 EST 2013
于 2013-09-06T01:44:09.503 回答
3

如果您想使用JodaTime实现,您可以执行以下操作。使用DateTimeFormatter获取格式 DateTime,然后使用DateTime#withYear(int)方法,可以更改年份。

String dob = "12311991";
DateTimeFormatter fmt = DateTimeFormat.forPattern("MMddyyyy");
DateTime dt = fmt.parseDateTime(dob).withYear(2013);
System.out.println(dt);
于 2013-09-06T01:41:17.503 回答
1

尝试使用日历

set(int year,
   int month,
   int date)

http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#set(int , int, int)

于 2013-09-06T01:40:21.470 回答
1

只需使用 SimpleDateFormat(点击我查看所有格式模式)。

String string = "12/31/2013";
Date date = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH).parse(string);
System.out.println(date); 
于 2013-09-06T01:44:33.057 回答
0

java.time

其他答案已过时。旧的日期时间类以及 Joda-Time 已被Java 8 及更高版本中内置的java.time框架所取代。

该类LocalDate真正表示没有时间和时区的仅日期值(缺少原始日期时间类)。

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
于 2016-06-29T04:46:58.297 回答