Javaを使用して「17-Jun」形式の日付を解析する必要がありますが、問題は、SimpleDateFormatを使用して「 dd-MM 」形式を解析しようとすると、 「Wed Jun 17 00:00:00 IST 1970」として返されることです。 1970 年ではなく、現在 (2014 年) の年を取得できます。
私の結果:
1970 年 6 月 17 日
予想される結果:
2014 年 6 月 17 日
Javaを使用して「17-Jun」形式の日付を解析する必要がありますが、問題は、SimpleDateFormatを使用して「 dd-MM 」形式を解析しようとすると、 「Wed Jun 17 00:00:00 IST 1970」として返されることです。 1970 年ではなく、現在 (2014 年) の年を取得できます。
私の結果:
1970 年 6 月 17 日
予想される結果:
2014 年 6 月 17 日
これを見てください..
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 17);
c.set(Calendar.MONTH, 5);
c.set(Calendar.YEAR, c.get(Calendar.YEAR));
Date date=new Date(c.getTimeInMillis());
SimpleDateFormat simpleDateformatter = new SimpleDateFormat("dd/mmm/yyyy");
String convertedDate = simpleDateformatter .format(date);
年を取得するには、単に使用できます
Calendar cal = Calendar.getInstance();
cal.get(Calendar.YEAR) will fetch you current year
それが役に立てば幸いです... :)
これを試して
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, 17);
c.set(Calendar.MONTH, 5);
c.set(Calendar.YEAR, c.get(Calendar.YEAR));
Date d=new Date(c.getTimeInMillis());
SimpleDateFormat formatter = new SimpleDateFormat("dd- mmm");
String conDate = formatter.format(d);
このようにしてください
Date date = new SimpleDateFormat("dd-MMM-yyyy").parse("17-Jun-"+ Calendar.getInstance().get(Calendar.YEAR));
ユーティリティ メソッドを作成する必要があります。SimpleDateFormat には、存在しない年を現在の年として解釈するものはありません。このようなもの:
public static Date parseDate(String dateString) throws ParseException {
//determine current year
Calendar today = Calendar.getInstance();
int currentYear = today.get(Calendar.YEAR);
//parse input
SimpleDateFormat format = new SimpleDateFormat("dd-MMM");
Date parsed = format.parse(dateString);
// set current year on parsed value
Calendar cal = Calendar.getInstance();
cal.setTime(parsed);
cal.set(Calendar.YEAR, currentYear);
return cal.getTime();
}
Java 8 では、次のようなことができます。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d-MMM");
MonthDay md = MonthDay.parse("17-Jun", dtf);
LocalDate d = LocalDate.now().with(md);
System.out.println(d.getDayOfMonth());
System.out.println(d.getMonthValue());
System.out.println(d.getYear());