您好我想知道是否有任何方式使用Jav的Date类或Joda Time类来获取今年的任何特定日期。例如,如果我想要日期12/31/2013
。这是一个问题的原因是因为我给出了某人生日的字符串表示,请说"12311991"
"MMddyyyy"
并且我想将其转换为具有month 12 day 31 and year 2013
的日期。
任何人都可以帮我这个吗?
我正在使用DateMidnight Joda时间类,我使用Simple Formatter将字符串解析为日期,但我想知道是否有任何方法可以将年份设置为特定年份。
答案 0 :(得分:5)
首先将String
转换为Date
...
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
答案 1 :(得分: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);
答案 2 :(得分:1)
尝试使用日历
set(int year,
int month,
int date)
http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#set(int,int,int)
答案 3 :(得分:1)
只需使用SimpleDateFormat(click me即可查看所有格式模式)。
String string = "12/31/2013";
Date date = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH).parse(string);
System.out.println(date);
答案 4 :(得分:0)
其他答案已过时。旧的日期时间类以及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