HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)

简介: Problem Description Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?Input There are multiply cases.

Problem Description
Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?

Input
There are multiply cases.
One line is one case.
There are three integers, year(0< year<10000), month(0<=month<13), day(0<=day<32).

Output
Output one line.
if the date is illegal, you should output “illegal”. Or, you should output what day it is.

Sample Input
2007 11 17

Sample Output
Saturday

这个题目的某个日期是星期几,和真正的日历是不一样的!!!
所以,用Java的日期类Calendar是过不了的。
只能自己写囖。。。题目意思是:1 1 1是星期一!
而事实上,1 1 1是星期六。不要问我为什么,我也不知道。。。

package cn.hncu.acm;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class P2133 {


    public static void main(String[] args) throws ParseException {
        String[] week = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
        int yuee[][]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int y = sc.nextInt();
            int m = sc.nextInt();
            int d = sc.nextInt();
             if((yunn(y)==0&&m==2&&d==29)||m>12||d>yuee[yunn(y)][m]||m==0||d==0||y==0)
               {
                   System.out.println("illegal");
                   continue;
               }
             /*
            //题目是有问题的
            //1 1 1 应该是星期六,具体为什么看网上资料。
            //这个题目要求已知1 1 1是星期一
            String[] week = {"","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
            String strTime = y+"-"+m+"-"+d;
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c = Calendar.getInstance();
            c.setTime(format.parse(strTime));
            System.out.println(week[c.get(Calendar.DAY_OF_WEEK)]);

            */
             int s=0;
             for(int i=1;i<y;i++){
                 if(yunn(i)==1){
                     s+=366;
                 }else{
                     s+=365;
                 }
             }

             for(int i=1;i<m;i++){
                 s+=yuee[yunn(y)][i];
             }
             s+=d;
             s=s%7;
             System.out.println(week[s]);
        }
    }


    public static int yunn(int xx)
    {
        if((xx%4==0&&xx%100!=0)||(xx%400==0))
            return 1;//是闰年
        return 0;//不是闰年
    }
}
目录
相关文章
|
2月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
29 0
|
12月前
|
Java
Java中Calendar类中月、星期、日 是否要加减1及其原因
Java中Calendar类中月、星期、日 是否要加减1及其原因
196 0
|
SQL 安全 Java
java Date 和 Calendar类 万字详解(通俗易懂)
java API专题——常用类Date和Calender类 内容分享。
91 0
java Date 和 Calendar类 万字详解(通俗易懂)
|
存储 Java
我想从Java Date中获取Year,Month,Day等,以便与Java中的公历日期进行比较这可能吗?
我想从Java Date中获取Year,Month,Day等,以便与Java中的公历日期进行比较这可能吗?
|
安全 Java API
Java中时间类中的Data类与Time类
boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
190 0
|
Java
Java Date类获取当前年月日
Java Date类获取当前年月日
621 0
|
Java 大数据
Java基础Date日期类
Java基础Date日期类
Java基础Date日期类
|
Java
Java Date与Calendar类
Java Date与Calendar类
77 0
|
存储 安全 Java
java类详解(深入浅出 Date Math System BigInteger等 )
首先说下时间,时间是我们生活中非常重要的,再万事万物皆对象的java当然也不会放过它,我们从jdk8之前和jdk8以后来说明下它
java类详解(深入浅出 Date Math System BigInteger等 )