日期问题

关于日期问题的注意事项

1. 月份是从0开始的,最后求的月份记得加1.

2. 星期是从星期天开始计算的,最后求的月份记得减一

3.适当情况 记得判断闰年 闰年2月份29天,一年365天,判断if((year%4==0&&year%100!=0)||(year%400==0))则为闰年

4.有的题目中先给出了例子,则要先计算例子中的结果看是否一样

5.日历中带的日期从1900年到2099

 

 

1----------第一届蓝桥杯----------------

在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天,所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”

要求 输入年份,输出的是:判断该年是否包含黑色星期五,如包含,给出具体日期

 

import java.util.Calendar;

import java.util.Scanner;

 

public class HeiWu {

 

//黑色星期五

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int year=sc.nextInt();

Calendar calendar=Calendar.getInstance();

calendar.set(Calendar.YEAR,year);

for(int i=0;i<12;i++)

{

 calendar.set(Calendar.MONTH,i);

 calendar.set(Calendar.DAY_OF_MONTH,13);

 int week=calendar.get(Calendar.DAY_OF_WEEK);

 if(week-1==5)

 {

 System.out.println(year+"-"+(i+1)+"-"+13);

 }

}

 

}

}

答案

2018

2018-4-13

2018-7-13

2.-------------------第四届蓝桥杯-----------------

题目标题: 高斯日记

    大数学家高斯有个好习惯:无论如何都要记日记。

    他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

    后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

    高斯出生于:1777430日。

    

    在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:17911215日。

    高斯获得博士学位的那天日记上标着:8113   

    请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21

请严格按照格式,通过浏览器提交答案。

注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

 

public class GaoSiRiJi {

//高斯日记

 

public static void main(String[] args) {

Calendar calendar=Calendar.getInstance();

 calendar.set(Calendar.YEAR,1777);

 calendar.set(Calendar.MONTH,3);

 calendar.set(Calendar.DAY_OF_MONTH,30);

 calendar.add(Calendar.DATE,8112);

 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

 Date date=new Date();

 date=calendar.getTime();

 String result=sdf.format(date);

         System.out.println(result);

}

 

}

1799-07-16

 

 

3. -------------------第六届蓝桥杯---------------

 X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

 

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

 

public class XingXiZhaDan {

 

/*

 *

 

比如:阿尔法炸弹201511日放置,定时为15天,则它在2015116日爆炸。

 

有一个贝塔炸弹,2014119日放置,定时为1000天,请你计算它爆炸的准确日期。

 

请填写该日期,格式为 yyyy-mm-dd 4位年份2位月份2位日期。比如:2015-02-19

 

请严格按照格式书写。不能出现其它文字或符号。*/

public static void main(String[] args) {

Calendar calendar=Calendar.getInstance();

calendar.set(Calendar.YEAR,2014);

calendar.set(Calendar.MONTH,10);

calendar.set(Calendar.DAY_OF_MONTH,9);

calendar.add(Calendar.DATE,1000);

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

Date date=new Date();

date=calendar.getTime();

String result=sdf.format(date);

        System.out.println(result);

}

 

}

 

 

4.  -------------------------------第三届蓝桥杯(决赛)-------------------------

 1949年的国庆节(10月1日)是星期六。

今年(2012)的国庆节是星期一。

那么,从建国到现在,有几次国庆节正好是星期日呢?

只要答案,不限手段!

可以用windows日历,windows计算器,Excel公式,。。。。。

当然,也可以编程!

不要求写出具体是哪些年,只要一个数目!

1950
1961
1967
1972
1978
1989
1995
2000
2006
9             

 

import java.util.Calendar;

 

public class XingQiJi {

 

/**

1949年的国庆节(101日)是星期六。

  今年(2012)的国庆节是星期一。

   那么,从建国到现在,有几次国庆节正好是星期日呢?

 */

public static void main(String[] args) {

Calendar calendar=Calendar.getInstance();

int count=0;

for(int i=1950;i<2012;i++)

{

calendar.set(Calendar.YEAR,i);

calendar.set(Calendar.MONTH,9);

calendar.set(Calendar.DAY_OF_MONTH,1);

int week=calendar.get(Calendar.DAY_OF_WEEK);

if(week==1)

{    count++;

System.out.println(i);

}

}

System.out.println(count);

}

 

}

5.  -------------------------------第三届蓝桥杯(初赛)-------------------------

 在我国古代和近代,一直采用干支法纪年。它采用10天干和12地支配合,一个循环周期为60年。
    10天干是:甲,乙,丙,丁,戊,己,庚,辛,壬,癸
    12地支是:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥
    如果某年是甲子,下一年就是乙丑,再下是丙寅,......癸酉,甲戌,乙亥,丙子,....

    总之天干、地址都是循环使用,两两配对。

    今年(2012)是壬辰年,1911年辛亥革命

    下面的代码根据公历年份输出相应的干支法纪年。已知最近的甲子年是1984年。

void f(int year)
{
char* x[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
char* y[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};

int n = year - 1984;

while(n<0) n += 60;


printf("%s%s\n", x[_______], y[_______]);
}


int main(int argc, char* argv[])
{
f(1911);
f(1970);
f(2012);
return 0;
}

 

1. public class 干支纪年法 {  

2.   

3.     // 甲、乙、丙、丁、戊、己、庚、辛、壬、癸  

4.     //public static final int[] skyBranch = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };  

5.   

6.     // 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥  

7.     //public static final char[] earthBranch = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l' };  

8.   

9.     // 甲、乙、丙、丁、戊、己、庚、辛、壬、癸  

10.     public static final char[] skyBranch = new char[] { '甲','乙','丙','丁','戊','己','庚','辛','壬','癸'};  

11.   

12.     // 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥  

13.     public static final char[] earthBranch = new char[] { '子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥' };  

14.   

15.     public static void main(String[] args) {  

16.   

17.         for (int i = 0; i < 2030; i++) {  

18.             try {  

19.                 caculate(i);  

20.                 if ((i % 20) == 0) {  

21.                     System.out.println("");  

22.                 } else {  

23.                     System.out.println(",");  

24.                 }  

25.   

26.             } catch (RuntimeException e) {  

27.                 System.out.println("Year" + i + " met exception.");  

28.   

29.             }  

30.         }  

31.   

32.     }  

33.   

34.     private static void caculate(int i) {  

35.         if (i < 4) {  

36.             throw new IllegalArgumentException("The starting year must be greater than 4");  

37.         }  

38.         int realYear = i - 4;  

39.         System.out.print("year" + i + " =[" + skyBranch[realYear % 10] + "][" + earthBranch[realYear % 12] + "]");  

40.   

41.     }  

42.   

43. }  

6. -------------------第四届蓝桥杯------------------------------

曾有邪教称1999年12月31日是世纪末日。当然该谣言已经不攻自破。 
还有人称今后的某个世纪末的12月31日,如果是星期一则会…… 
有趣的是,任何一个世纪末的月份的12月31日都不可能是星期一!! 
于是,谣言制造商又修改为星期日…… 
1999年的12月31日是星期五, 
请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)? 
(只写年份,不写月和日)【结果 2299

package CalendarDemo;

 

import java.util.Calendar;

 

public class ShiJiMo {

 

public static void main(String[] args) {

Calendar calendar=Calendar.getInstance();

for(int i=2099;i<3000;i=i+100)

{

calendar.set(Calendar.YEAR,i);

calendar.set(Calendar.MONTH,11);

calendar.set(Calendar.DAY_OF_MONTH,31);

int week=calendar.get(Calendar.DAY_OF_WEEK);

if(week==1)

{

System.out.println(i);

}

}

}

 

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值