首页 > 其他分享 >跑步锻炼 —— 蓝桥( Calendar类 详解)

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

时间:2023-01-04 01:00:13浏览次数:56  
标签:set get int year 蓝桥 详解 cal 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);//周

  

题目描述

  小蓝每天都锻炼身体。

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

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

 

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);
        
    }
}

 

标签:set,get,int,year,蓝桥,详解,cal,Calendar
From: https://www.cnblogs.com/mcpf/p/17023806.html

相关文章

  • Java 8 中的 Streams API 详解
    filterfilter对原始Stream进行某项测试,通过测试的元素【返回true的】被留下来生成一个新Stream。清单10.留下偶数Integer[]sixNums={1,2,3,4,5,6};Integer[]......
  • (转)go 的基本命令详解
    原文:https://blog.csdn.net/qq_43405330/article/details/119854821go的基本命令go命令的基本用法是:gocommand[arguments]go的基本命令有:build,clean,env,fix,fm......
  • 1.2 SMU Winter 2023 蓝桥杯模拟赛 1
    [蓝桥杯2013省B]带分数题意:给n,使满足式子a+b/c=n,其中a,b,c共同恰好由1,2...9组成,求a,b,c的取值种数思路1:枚举出9个数的全排列(可使用next_permutation()),再用两重循环暴......
  • 寒假第一次洛谷蓝桥个人赛 题解+补题(下)
    D.灵能传输##神仙结论把前缀和应用到极致,6先考虑三个数a,b,c,进行一次变换也就是a+b,-b,c+b可见三个数之和不变,也就是s[3]不变然后之前的s[1]+b,愿称之为s[2]之前的s......
  • 递增序列——蓝桥(简单)
    题目描述对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 4545 度的斜线上,这两个字母从左向右看、或者从上向下......
  • patch-package给依赖打补丁实例详解
    1、安装patch-packagepatch-package 官方只支持npm和yarn。注意:不要使用cnpmyarnaddpatch-package-D2、创建补丁先修改依赖文件,然后运行patch-package来创......
  • 基于Linux下的虚拟机安装详解
    首先我们打开一个shell切换到超级用户,输入如下命令:[kiosk@foundation21Desktop]$pwd/home/kiosk/Desktop[kiosk@foundation21Desktop]$su-rootPassword:Lastlogin:F......
  • ntpq 详解
    Gentoo(也许其他发行版也是?)中"ntpq-p"的manpage只有简短的描述:“打印出该服务器已知的节点列表和它们的状态概要信息。”我还没见到关于这个命令的说明文档,因此这里......
  • 蛇形填数——蓝桥杯(简单)
    题目描述如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。  容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数......
  • 排序——蓝桥(简单)
    题目描述例如,对于字符串 lanlan 排序,只需要 11 次交换。对于字符串 qiaoqiao 排序,总共需要 44 次交换。小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要......