第几天?

Problem Description
给定一个日期,输出这个日期是该年的第几天。
 

 

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
 


Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
 


Sample Input

1985/1/20 2006/3/12
 

 

Sample Output

20
71
 

正确算法:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
 * 考查对日期函数、switch的运用
 */
public class 第几天 {

    public static void main(String[] args) throws ParseException {
        Scanner input = new Scanner(System.in);
        while (input.hasNext()) {
            String s = input.next();
            String[] a = s.split("/");
            int y = Integer.valueOf(a[0]);
            int m = Integer.valueOf(a[1]);
            int d = Integer.valueOf(a[2]);
            //第一种办法
            SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
            Calendar cal = Calendar.getInstance();

            cal.setTime(df.parse(s));
            int day = cal.get(Calendar.DAY_OF_YEAR);
            System.out.println(day);
            /*第二种办法
            int m2 = 0;
            if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
            m2 = 29;
            } else {
            m2 = 28;
            }
            
            for (int i = 1; i < m; i++) {
            switch (i) {
            case 2:
            d = d + m2;
            break;
            case 4:
            case 6:
            case 9:
            case 11:
            d = d + 30;
            break;
            default:
            d = d + 31;
            }
            }
            System.out.println(d);
             */
            /**第三种办法,已过时,由于有些OJ评判系统不支持过时的方法,所以不推荐使用
            Date date = new Date(y - 1900, m - 1, d);
            SimpleDateFormat f = new SimpleDateFormat("D");
            String tian = f.format(date);
            System.out.println(tian);
             */
        }
    }

}
原文地址:https://www.cnblogs.com/syjp/p/10360531.html