Java中使用Calendar类来解决日期的算法题

来源:互联网 发布:淘宝页头尺寸 编辑:程序博客网 时间:2024/06/08 09:08

使用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-11c.set(Calendar.DAY_OF_MONTH, 10);//设置给定的日期为get 和 set 的字段数字,指示一个月中的某天。
c.set(Calendar.DAY_OF_WEEK, 2);//设置给定的星期为:星期一(星期是周日为第一天,1-7分别对应周日-周六)
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));

输出:2018-5-10 2:57:32

当前只是设置了年、月、日,其他没有设置的是按照默认为当前时间来处理,这里的时、分、秒输出的是当前的时间

2、三个参数(年,月,日)的例如:

Calendar c = Calendar.getInstance();c.set(2017,3,4);//例如设置日历为:2017-4-4System.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

0 0
原创粉丝点击