我有两个字符串
String withYear = "12/04/1988"
String withoutYear = "10/04"
日期格式为MM / dd / yyyy
我正在尝试确定字符串是否包含一年。
到目前为止,这是我的代码:
Calendar c= Calendar.getInstance();
c.setTime(dt.parse(withYear)); //dt is a SimpleDateFormat 'MM/dd/yyyy'
c.get(Calendar.YEAR) // = 1988
c.setTime(dt.parse(withoutYear));
c.get(Calendar.YEAR);// = 1970
答案 0 :(得分:4)
我认为最简单的方法是忘记完全制作日期/日历对象。您只需检查字符串以查看它有多少部分:
public static boolean containsYear(String dateStr){
return dateStr.split("/").length == 3;
}
答案 1 :(得分:3)
你的代码工作正常,当你调用dt.parse(withoutYear)时,年份自动设置为大纪元(1970年)。
来自SimpleDateFormat:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
此解析操作使用日历生成日期。全部 日历的日期时间字段在解析之前被清除,并且 日历的日期时间字段的默认值用于任何 缺少日期时间信息。 例如,年份的价值 如果没有给出年份值,则使用GregorianCalendar解析日期为1970年 来自解析操作。(强调我的)
如果您不希望任何有效的年份值为1970年,那么您可以假设年份== 1970年的所有日期都没有指定年份。
更完整的解决方案是继承GregorianCalendar并为字段YEAR = -1;
答案 2 :(得分:2)
String data[] = withYear.split("/");
String year =null ;
if(data.length==3){
year = data[2] ;
System.out.println(year);
}
答案 3 :(得分:0)
如果你愿意,你可以使用YodaTime,它很容易处理时间/日期,更多关于它Yoda time getYear()。您可以尝试解析String,然后解析getYear()。
希望这有帮助。