有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从输入字符串中找出日期

我试图从给定的输入字符串中找出具体的日期,可以是“201411W3”。我知道这一周是从这个字符串(W3)开始的第三个星期,活动将在星期五举行,所以我想找出第三个星期五的日期。我是这样做的:

public static Date getLastFriday( int month, int year ) {
    Calendar cal = Calendar.getInstance();
    cal.set( year, month, 1 );
    cal.add( Calendar.DAY_OF_MONTH, - ( cal.get( Calendar.DAY_OF_WEEK ) % 7 + 8 ) );
    return cal.getTime();
}

当我调用这个方法:getLastFriday(2014年11月11日)时,我会得到一个值“Fri Nov 21 13:16:57 EST 2014”,我需要解析这个值来找出日期。有没有办法只从结果中得到日期

谢谢


共 (3) 个答案

  1. # 1 楼答案

    使用thisSimpleDataFormat

    我没有测试以下代码,但它的工作方式如下:

    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    Date myDate = sdf.parse("Fri Nov 21 13:16:57 EST 2014");
    
  2. # 2 楼答案

    如果我理解你的意思,那么你可以使用下面的代码作为参考-

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    
    public class Test{
    
        public static void main (String[] args)
        {
            String str="201411W3";
            String[] strSplitted = str.split("W");
    
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.MONTH, Integer.parseInt(strSplitted[0].substring(4,6))-1);
            calendar.set(Calendar.YEAR, Integer.parseInt(strSplitted[0].substring(0,4)));
            calendar.set(Calendar.DAY_OF_MONTH, 1);
    
            if(calendar.get(Calendar.DAY_OF_WEEK)==7)
            {
                calendar.set(Calendar.WEEK_OF_MONTH, Integer.parseInt(strSplitted[1])+1);
            }   
            else
            {
                calendar.set(Calendar.WEEK_OF_MONTH, Integer.parseInt(strSplitted[1]));
            }
    
            calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
            String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
    
            System.out.println(formattedDate);
        }
    }
    

    Output : 2014-11-21您可以将格式更改为您想要的任何格式

  3. # 3 楼答案

    如果只想得到没有秒的月份和日期,可以调用.get(Calendar.MONTH).get(Calendar.DATE)并将它们传递到新日期对象的构造函数中,然后返回该对象

    更多信息:here