使用Java中的Calendar类有时候遇到日期类的算法题就会变得特别简单
第一步:需要获得日历的对象,静态调用Calendar中的getInstance()方法获得的是默认的默认时区和默认的语言环境。
Calendar c = Calendar.getInstance();
第二步:通过Calendar对象调用set()方法给日历设置一个给定的值,set()方法有很多参数
一、set()方法的使用
1、两个参数的例如:
Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, 2018); //设置给定年为2018年 c.set(Calendar.MONTH, 4); //设置给定的月为5月份,月份的值是0-11 c.set(Calendar.DAY_OF_MONTH, 10); //设置给定的日期为get 和 set 的字段数字,指示一个月中的某天。
c.set(Calendar.DAY_OF_WEEK, 2); //设置给定的星期为:星期一(星期是周日为第一天,1-7分别对应周日-周六)
输出:2018-5-10 2:57:32System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)+" "+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
当前只是设置了年、月、日,其他没有设置的是按照默认为当前时间来处理,这里的时、分、秒输出的是当前的时间
2、三个参数(年,月,日)的例如:
Calendar c = Calendar.getInstance(); c.set(2017,3,4); //例如设置日历为:2017-4-4 System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)+" "+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
输出:2017-4-4 3:4:6
3、五个参数和六个参数的例如:
c.set(2017,3,4,8,0); //例如设置日历为:2017-4-4 8:0(至于秒是当前时间的秒数) c.set(2017,3,4,8,0,59); //例如设置日历为:2017-4-4 8:0:59
二、在算法中的使用
1、例如:问题描述有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在在这一年中,既是13号又是星期五的日期。
说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
样例输入
1998
样例输出
1998-2-13
1998-3-13
1998-11-13
代码如下:
import java.util.Calendar; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Calendar c = Calendar.getInstance(); for (int i = 0; i < 12; i++) { c.set(n, i,13); if(c.get(Calendar.DAY_OF_WEEK)==6){ System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)); } } } }
2、例如:
星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
代码如下:import java.util.Calendar; public class Main { public static void main(String[] args) { Calendar c = Calendar.getInstance(); int i = 9; c.set(2014, 10,i); c.set(Calendar.DAY_OF_MONTH, i+1000); System.out.println(c.get(Calendar.YEAR)+"-"+(c.get(Calendar.MONTH)+1)+"-"+c.get(Calendar.DAY_OF_MONTH)); } }
输出:2017-8-5注意:这道题填写的答案格式为:yyyy-mm-dd