我希望我的应用以格式解析日期" dd-MMM-yyyy"。当我尝试获得月份并获得其他结果时,该日期已成功解析。我把06-sep-2014作为日期。但是,当我尝试从解析日期中提取月份和年份时,它显示的是8月而不是9和114而不是2014年。
logcat输出
6
8
114
这是我的代码
String date1 = "06 sep 2014";
SimpleDateFormat format1 = new SimpleDateFormat("dd MMM yyyy");
SimpleDateFormat format2 = new SimpleDateFormat("d MMM yyyy");
Date date;
try {
if (date1.length() == 11) {
date = format1.parse(date1);
} else {
date = format2.parse(date1);
}
int day=date.getDate();
int mon1=date.getMonth();
int year1=date.getYear();
System.out.println("date is:"+ date);
System.out.println(day);
System.out.println(mon1);
System.out.println(year1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:4)
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public final class DateParseDemo {
public static void main(String[] args){
final DateFormat df = new SimpleDateFormat("dd MMM yyyy");
final Calendar c = Calendar.getInstance();
try {
c.setTime(df.parse("06 sep 2014"));
System.out.println("Year = " + c.get(Calendar.YEAR));
System.out.println("Month = " + (c.get(Calendar.MONTH)));
System.out.println("Day = " + c.get(Calendar.DAY_OF_MONTH));
}
catch (ParseException e) {
e.printStackTrace();
}
}
}
输出:
至于月份字段,这是从0开始的。这意味着January = 0和December = 11.正如javadoc所述,
get和set的字段编号,表示月份。这是特定于日历的值。格列高利历和朱利安历的一年中的第一个月是1月,即0;最后一个取决于一年中的月数。
答案 1 :(得分:3)
因为 date.getyear 返回一个值,该值是从包含或以此日期所代表的时间开始的年份减去1900的结果对象,在本地时区解释。
也许,你可以使用例如;
int year1 = date.getYear();
的System.out.println(YEAR1 + 1900);
答案 2 :(得分:0)
使用Date类,它为您提供从1900年开始的年份。获得所需内容的更好方法是使用Calendar类。见http://developer.android.com/reference/java/util/Date.html#getYear()