跑步锻炼 —— 蓝桥( Calendar类 详解)

Calender使用:

  使用Calendar.getInstance()不仅能获取当前的时间,还能指定需要获取的时间点,在项目应用中达到定时的作用。

  Calender类在java.util包中。使用Calender类的static方法getInstance()可以初始化一个日历对象,例如:

Calendar calendar = Calendar.getInstance();

然后,calendar对象可以调用方法:

public final void set(int year,int month,int date)
public final void set(int year,int month,int date,int hour,int minute)
public final void set(int year,int month,int date,int hour,int minute,int second)

将日历翻到任何一个时间,当参数year取负数时表示公元前(实际世界中的公元前)。

  calender对象调用方法public int get(int field)可以获取有关年份、月份、小时、星期等信息,参数field的有效值由Calendar的静态常量指定,例如:

calendar.get(Calendar.MONTH);

返回一个整数,如果该整数是0表示当前日历是在一月,该整数是1表示当前日历是在二月,等等。又如:

calendar.get(Calendar.DAY_OF_WEEK);

返回一个整数,如果该整数是1表示星期日,该整数是2表示星期一,以此类推,该整数是7表示星期六。

  calendar对象调用public long getTimeInMillis()可以返回当前calendar对象中时间的毫秒即使,如果运行Java程序的本地时区是北京时区,返回的这个毫秒数是当前calendar对象中的时间1970年01月01日08点的差值(这是一个不小的数)。

set():

  • set(int fi,int val)方法用于将指定的日历字段(fi)设置为指定的value(val)。
  • set(int yy,int mm,int dd)方法用于放置给定日历字段month(mm),year(yy)和date(dd)的值。
  • set(int yy,int mm,int dd,int hours,int min)方法用于放置给定日历字段的值year(yy),month(mm),date(dd),一天中的小时数(小时) )和分钟(分钟)。
  • set(int yy,int mm,int dd,int hours,int min,int sec)方法用于将给定日历字段的值year(yy),month(mm),date(dd),hours放入天(小时),分钟(分钟),秒(秒)。

calendar.get(Calendar.XXXX):

  1.  初始值

    Calendar cal = Calendar.getInstance();//得到当前时间
    cal.setTimeInMillis(0);//转换成格林威治时间

   2.   获取值

    cal.get(Calendar.YEAR);//年
    cal.get(Calendar.MONTH) + 1;//月(必须要+1)
    cal.get(Calendar.DATE);//日
    cal.get(Calendar.HOUR_OF_DAY);//时
    cal.get(Calendar.MINUTE);//分
    cal.get(Calendar.SECOND);//秒
    cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1,剩下自己推算)
    如果拿时间不是为了计算而是展示出来,肯定用SimpleDateFormart了,模式为yyyy-MM-dd HH:mm:ss
  3.  设置值

    cal.set(2013, 5, 4, 13, 44, 51);//年月日时分秒(月份0代表1月)
    cal.set(Calendar.YEAR, 2014);//年
    cal.set(Calendar.MONTH, 7);//月(月份0代表1月)
    cal.set(Calendar.DATE, 11);//日
    cal.set(Calendar.HOUR_OF_DAY, 15);//时
    cal.set(Calendar.MINUTE, 33);//分
    cal.set(Calendar.SECOND, 32);//秒
  4.  运算值

    cal.add(Calendar.YEAR, 1);//年
    cal.add(Calendar.MONTH, 1);//月
    cal.add(Calendar.DATE, 1);//日
    cal.add(Calendar.HOUR_OF_DAY, -1);//时
    cal.add(Calendar.MINUTE, 1);//分
    cal.add(Calendar.SECOND, 1);//秒
    cal.add(Calendar.DATE, 7);//周

  

题目描述

  小蓝每天都锻炼身体。

  正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 22 千米。

小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

 

复制代码
import java.util.Scanner;
import java.util.Calendar;

public class Main {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();    //初始化一个日历对象
        c.set(2000,0,1);        //用于放置给定日历字段
        int year = 0;
        int month = 0;
        int day = 0;
        int week = 0;
        int sum = 0;
        while(true) {
            if(year==2020&&month==10&&day==1) {
                break;
            }
            year = c.get(Calendar.YEAR);
            month = c.get(Calendar.MONTH)+1;    //使用时加1 因为初始值是0 +1 可以直接代表月份
            day = c.get(Calendar.DAY_OF_MONTH);    //day值为1表示月初
            week = c.get(Calendar.DAY_OF_WEEK);    //如果该整数是1表示星期日  该整数是2表示星期一
            if(week==2||day==1) {
                sum = sum + 2;
            }else {
                sum = sum + 1;
            }
            c.add(Calendar.DAY_OF_MONTH,1);    //进行递增
        }
        System.out.println(sum);
        
    }
}
复制代码

 

posted @   抹茶泡芙  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示