检查日期字符串是否包含年份

时间:2013-09-30 14:19:29

标签: java android date

我有两个字符串

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

4 个答案:

答案 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()。

希望这有帮助。